diff --git a/en/.gitignore b/en/.gitignore new file mode 100644 index 0000000..b037f8f --- /dev/null +++ b/en/.gitignore @@ -0,0 +1 @@ +verapdf_report.xml diff --git a/en/Makefile b/en/Makefile index bd66b3f..f7bf2f8 100644 --- a/en/Makefile +++ b/en/Makefile @@ -1,6 +1,6 @@ export TEXINPUTS=../tex//: -all: thesis.pdf abstract.pdf +all: thesis.pdf abstract.pdf verapdf_report.xml # LaTeX must be run multiple times to get references right thesis.pdf: thesis.tex $(wildcard *.tex) bibliography.bib thesis.xmpdata @@ -12,6 +12,9 @@ thesis.pdf: thesis.tex $(wildcard *.tex) bibliography.bib thesis.xmpdata abstract.pdf: abstract.tex abstract.xmpdata pdflatex $< +verapdf_report.xml: thesis.pdf abstract.pdf verapdf_profile_UK7987v1c8.xml + verapdf --profile verapdf_profile_UK7987v1c8.xml thesis.pdf abstract.pdf >$@ + clean: rm -f *.log *.dvi *.aux *.toc *.lof *.lot *.out *.bbl *.blg *.xmpi rm -f thesis.pdf abstract.pdf diff --git a/en/verapdf_profile_UK7987v1c8.xml b/en/verapdf_profile_UK7987v1c8.xml new file mode 100644 index 0000000..64deaad --- /dev/null +++ b/en/verapdf_profile_UK7987v1c8.xml @@ -0,0 +1,1514 @@ + + +
+ Custom profile for Charles University, version 0.8 + 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 && lastID.length() > 0 + + 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 + + + + + + + + + + + + + + + + + + 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 + + + + + + + + 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 + + + + + + + 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. + (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() < 32768 + + 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. + maximalCID <= 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. + 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 + + + + + + + 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. + S != 'GTS_PDFX' || containsDestOutputProfileRef == false + + 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 + + + + + + + + + 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 + + + + + + + + + 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 + containsHTP == false + + 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 + + + + + + + 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) + + 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, + 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 + 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 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") && containsPS == false && containsOPI == false + + 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 + containsRef == false + + 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 || 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-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 + + + + + + + + + + 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 + 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 + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + 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 + + + + + + + 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" || (containsA == false && containsAA == false) + + A Widget annotation contains either A or AA entry + + + + + + + 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 + + + + + + + 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 + + + + + + + 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. + 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. + containsAA == false + + 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. + containsAA == false + + 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 == "pdfaSchema") && + (isNamespaceURIValidURI == true && namespaceURIPrefix == "pdfaSchema") && + (isPrefixValidText == true && prefixPrefix == "pdfaSchema") && + (isPropertyValidSeq == true && 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 == "pdfaType") && + (isDescriptionValidText == true && descriptionPrefix == "pdfaType") && + (isFieldValidSeq == true && (fieldPrefix == null || 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 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 + 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-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 + + +