1{"_id": "685ad23deb03a9e478ff5247", "createdDate": "2025-06-24T16:28:45.489Z", "jobID": "eq-449882", "PDFresults": {"report": {"buildInformation": {"releaseDetails": [{"id": "core", "version": "1.28.1", "buildDate": 1745946180000}, {"id": "validation-model", "version": "1.28.1", "buildDate": 1745953500000}, {"id": "gui", "version": "1.28.1", "buildDate": 1748123640000}]}, "jobs": [{"itemDetails": {"name": "/home/pdf-worker/www/dist/scanners/CV_Shaonong_Chen_20191122-2.pdf", "size": 323677}, "validationResult": [{"details": {"passedRules": 1714, "failedRules": 10, "passedChecks": 16699, "failedChecks": 59, "tags": ["paragraph", "metadata", "alt-text", "syntax", "text", "list", "structure", "font"], "ruleSummaries": [{"ruleStatus": "FAILED", "specification": "ISO 32005:2023", "clause": "Table 5. StructTreeRoot-L", "testNumber": 1, "status": "failed", "failedChecks": 2, "tags": ["list", "structure"], "description": "StructTreeRoot shall not contain <L>", "object": "SEL", "test": "parentStandardType != 'StructTreeRoot'", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[7](52 0 obj SEL L)", "errorMessage": "StructTreeRoot contains <L>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[32](97 0 obj SEL L)", "errorMessage": "StructTreeRoot contains <L>", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 14289-2:2024", "clause": "8.11.2", "testNumber": 1, "status": "failed", "failedChecks": 1, "tags": ["syntax"], "description": "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", "object": "CosDocument", "test": "DisplayDocTitle == true", "checks": [{"status": "failed", "context": "root", "errorMessage": "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 = null, DisplayDocTitle = null)", "errorArguments": [null, null]}]}, {"ruleStatus": "FAILED", "specification": "ISO 14289-2:2024", "clause": "8.11.1", "testNumber": 2, "status": "failed", "failedChecks": 1, "tags": ["metadata"], "description": "The Catalog dictionary of a conforming file shall contain the Metadata key whose value is a metadata stream as defined in ISO 32000-2:2020, 14.3. The metadata stream dictionary shall contain entry Type with value /Metadata and entry Subtype with value /XML", "object": "PDDocument", "test": "containsMetadata == true", "checks": [{"status": "failed", "context": "root/document[0]", "errorMessage": "The document catalog dictionary doesn't contain metadata key or metadata stream dictionary does not contain either entry Type with value /Metadata or entry Subtype with value /XML", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 32005:2023", "clause": "Table 5. StructTreeRoot-Document", "testNumber": 1, "status": "failed", "failedChecks": 1, "tags": ["structure"], "description": "StructTreeRoot shall contain exactly one <Document>", "object": "PDStructTreeRoot", "test": "kidsStandardTypes.split('&').filter(elem => elem == 'Document').length == 1", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)", "errorMessage": "StructTreeRoot either doesn't contain or contains more than one <Document>", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 32005:2023", "clause": "Table 5. StructTreeRoot-P", "testNumber": 1, "status": "failed", "failedChecks": 26, "tags": ["paragraph", "structure"], "description": "StructTreeRoot shall not contain <P>", "object": "SEP", "test": "parentStandardType != 'StructTreeRoot'", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[1](46 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[2](47 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[3](48 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[4](49 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[5](50 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[9](72 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[10](73 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[11](74 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[12](75 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[13](77 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[14](78 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[15](79 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[16](80 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[17](81 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[18](82 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[19](83 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[20](84 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[21](85 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[22](86 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[24](88 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[25](89 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[27](91 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[28](92 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[29](93 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[30](94 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[33](114 0 obj SEP P)", "errorMessage": "StructTreeRoot contains <P>", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 32005:2023", "clause": "Table 5. StructTreeRoot-Hn", "testNumber": 1, "status": "failed", "failedChecks": 7, "tags": ["structure"], "description": "StructTreeRoot shall not contain <Hn>", "object": "SEHn", "test": "parentStandardType != 'StructTreeRoot'", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[0](43 0 obj SEHn H1)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[6](51 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[8](71 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[23](87 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[26](90 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[31](95 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)/K[34](115 0 obj SEHn H2)", "errorMessage": "StructTreeRoot contains <Hn>", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 14289-2:2024", "clause": "8.4.3", "testNumber": 1, "status": "failed", "failedChecks": 17, "tags": ["alt-text", "text"], "description": "In all cases, where real content maps to Unicode PUA values, an ActualText or Alt entry shall be present", "object": "Glyph", "test": "isRealContent == false || unicodePUA == false || actualTextPresent == true || altPresent == true", "checks": [{"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[283]/usedGlyphs[0](SymbolMT SymbolMT 120 0 373437697 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[491]/usedGlyphs[0](SymbolMT SymbolMT 120 0 237297104 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[678]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1925785585 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[708]/usedGlyphs[0](SymbolMT SymbolMT 120 0 449338124 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[745]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1037475674 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[900]/usedGlyphs[0](SymbolMT SymbolMT 120 0 983767354 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[1142]/usedGlyphs[0](SymbolMT SymbolMT 120 0 773348567 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[1248]/usedGlyphs[0](SymbolMT SymbolMT 120 0 2115640742 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[1320]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1602167682 0 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[47]/usedGlyphs[0](SymbolMT SymbolMT 120 0 458998685 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[106]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1700421020 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[147]/usedGlyphs[0](SymbolMT SymbolMT 120 0 345290829 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[208]/usedGlyphs[0](SymbolMT SymbolMT 120 0 883678948 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[255]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1906947271 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[304]/usedGlyphs[0](SymbolMT SymbolMT 120 0 1177072083 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[331]/usedGlyphs[0](SymbolMT SymbolMT 120 0 2010070923 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[2](36 0 obj PDPage)/contentStream[0](37 0 obj PDSemanticContentStream)/operators[432]/usedGlyphs[0](SymbolMT SymbolMT 120 0 502891368 2 true)", "errorMessage": "Real content maps to Unicode PUA values, but ActualText and Alt entry are not present", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 32005:2023", "clause": "Table 5. StructTreeRoot-Part", "testNumber": 1, "status": "failed", "failedChecks": 1, "tags": ["structure"], "description": "StructTreeRoot shall not contain <Part>", "object": "SEPart", "test": "parentStandardType != 'StructTreeRoot'", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)/K[0](42 0 obj SEPart Part)", "errorMessage": "StructTreeRoot contains <Part>", "errorArguments": []}]}, {"ruleStatus": "FAILED", "specification": "ISO 14289-2:2024", "clause": "8.2.5.2", "testNumber": 1, "status": "failed", "failedChecks": 1, "tags": ["structure"], "description": "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", "object": "PDStructTreeRoot", "test": "kidsStandardTypes == 'Document'", "checks": [{"status": "failed", "context": "root/document[0]/StructTreeRoot[0](39 0 obj PDStructTreeRoot)", "errorMessage": "The structure tree root contains H1,P,P,P,P,P,H2,L,H2,P,P,P,P,P,P,P,P,P,P,P,P,P,P,H2,P,P,H2,P,P,P,P,H2,L,P,H2 element(s) instead of a single Document structure element", "errorArguments": ["H1,P,P,P,P,P,H2,L,H2,P,P,P,P,P,P,P,P,P,P,P,P,P,P,H2,P,P,H2,P,P,P,P,H2,L,P,H2"]}]}, {"ruleStatus": "FAILED", "specification": "ISO 14289-2:2024", "clause": "8.4.5.5.1", "testNumber": 1, "status": "failed", "failedChecks": 2, "tags": ["font"], "description": "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", "object": "PDFont", "test": "Subtype == \"Type3\" || Subtype == \"Type0\" || renderingMode == 3 || containsFontFile == true", "checks": [{"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[7]/font[0](ArialMT)", "errorMessage": "The font program is not embedded", "errorArguments": []}, {"status": "failed", "context": "root/document[0]/pages[0](3 0 obj PDPage)/contentStream[0](4 0 obj PDSemanticContentStream)/operators[18]/font[0](TimesNewRomanPSMT)", "errorMessage": "The font program is not embedded", "errorArguments": []}]}]}, "jobEndStatus": "normal", "profileName": "PDF/UA-2 + Tagged PDF validation profile", "statement": "PDF file is not compliant with Validation Profile requirements.", "compliant": false}], "processingTime": {"start": 1750782523333, "finish": 1750782525351, "duration": "00:00:02.018", "difference": 2018}}], "batchSummary": {"duration": {"start": 1750782523156, "finish": 1750782525442, "duration": "00:00:02.286", "difference": 2286}, "totalJobs": 1, "outOfMemory": 0, "veraExceptions": 0, "failedEncryptedJobs": 0, "failedParsingJobs": 0, "validationSummary": {"nonCompliantPdfaCount": 1, "compliantPdfaCount": 0, "failedJobCount": 0, "totalJobCount": 1, "successfulJobCount": 1}, "featuresSummary": {"failedJobCount": 0, "totalJobCount": 0, "successfulJobCount": 0}, "repairSummary": {"failedJobCount": 0, "totalJobCount": 0, "successfulJobCount": 0}, "multiJob": false}}}}