GetPDFUADiagnosticsA
PDF/UA & 접근성
설명
끝의 A는 ANSI(char) DLL 진입점을 나타내며 ActiveX/COM 표면은 Unicode 형식만 노출합니다. 동작은 GetPDFUADiagnostics와 동일하고 문자열 인수는 현재 SetAnsiMode 코드 페이지를 사용해 해석됩니다
현재 문서에서 발견된 잠재적 PDF/UA-1(ISO 14289-1) 준수 문제를 줄바꿈으로 구분한 목록으로 반환합니다. 각 줄에는 문제 코드 하나와 콜론, 사람이 읽을 수 있는 설명이 포함됩니다. 문제가 감지되지 않으면 빈 문자열을 반환합니다
구문
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
문제 코드
| PDF-VERSION-LOW | 문서의 PDF 버전(파일 헤더에 기록됨)이 1.7 미만입니다 PDF/UA-1은 ISO 32000-1:2008(PDF 1.7)을 기준으로 정의됩니다 버전을 1.7로 자동으로 높이려면 SetPDFUAMode를 호출합니다 |
|---|---|
| MARKED-FALSE | MarkInfo/Marked가 true로 설정되지 않았으므로 문서는 태그된 PDF가 아닙니다 |
| LANG-MISSING | 문서 Catalog /Lang 항목이 없거나 비어 있습니다. ISO 14289-1 §7.3은 자연어 선언을 요구합니다 |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle이 true가 아닙니다. 문서 제목이 제목 표시줄에 나타나도록 ISO 14289-1 §7.1에서 요구합니다 |
| DOCINFO-TITLE-MISSING | 문서 정보 사전의 /Title 항목이 없거나 비어 있습니다. PDF/UA-1에서는 문서를 열 때 보조 기술이 제목을 알릴 수 있도록 문서 제목이 필요합니다. 이 검사는 DISPLAYDOCTITLE-FALSE와 상호 보완적입니다. 해당 검사는 제목이 뷰어에 표시되는지 확인하고, 이 검사는 제목 값 자체가 존재하는지 확인합니다. 설정하려면 SetInformation을 키 Title로 호출합니다 |
| XMP-NO-PDFUAID | XMP 메타데이터 스트림에 pdfuaid:part 항목이 없습니다 ISO 14289-1 §7.2에서 요구합니다 |
| ANNOT-NO-CONTENTS:N | N개의 비면제 주석(Widget, PrinterMark 및 TrapNet 하위 형식 제외)에 Contents 항목이 없습니다. ISO 14289-1 §7.18.1에서 요구합니다 |
| EMBED-NO-AFR:N | N개의 포함 파일에서 파일 사양 사전의 AFRelationship 항목이 누락되었습니다 ISO 14289-1 §7.11에서 요구합니다 |
| FIGURE-NO-ALT:N | N개의 Figure 또는 Formula 구조 요소에 Alt 텍스트 값이 없습니다. ISO 14289-1 §7.5 및 ISO 32000-1 §14.9.3은 그래픽 그림과 수학 공식 모두에 대체 설명을 요구합니다 |
| HEADING-LEVEL-SKIP:N | 문서 순서에서 N개의 제목 수준 건너뛰기가 감지되었습니다(예: H1 바로 뒤에 H2를 건너뛰고 H3이 옴). ISO 14289-1 §7.1 및 WCAG 2.x 성공 기준 1.3.1은 제목이 빈 수준 없이 중첩되도록 요구합니다 |
| STRUCT-UNCLOSED:N | EndTag 호출 횟수가 올바르지 않아 N개의 구조 요소가 아직 열려 있습니다. 이 요소들은 구조 트리 루트에서 누락됩니다 |
| TABLE-TH-NO-SCOPE:N | N개의 TH(표 머리글 셀) 구조 요소에 Scope 속성이 없습니다. ISO 32000-1 §14.8.4.3.4 Table 337은 각 머리글 셀이 어떤 데이터 셀에 적용되는지 설명하는 속성으로 Scope(Row, Column 또는 Both)를 정의합니다. 이 속성이 없으면 보조 기술이 복잡하거나 머리글이 여러 개인 표에서 머리글과 데이터 셀을 안정적으로 연결할 수 없습니다. 각 TH 요소를 태그한 직후 SetStructElemScope 또는 AddTagAttribute를 Owner='Table', Name='Scope'로 호출합니다 |
| FORM-NO-TOOLTIP:N | N개의 대화형 양식 필드(Widget 주석)에 TU(도구 설명/접근 가능 이름) 항목이 없습니다. ISO 14289-1 §7.18.4는 보조 기술이 필드 목적을 알릴 수 있도록 모든 필드에 TU 항목을 요구합니다. /TU는 화면 판독기가 읽는 접근 가능 이름이며 프로그래밍에 쓰는 부분 필드 이름 /T와 다릅니다. 양식 필드를 만들거나 로드할 때 TU 값을 설정합니다 |
| LIST-STRUCT:N | N개의 LI 또는 LBody 구조 요소가 필수 부모 밖에 있습니다. ISO 32000-1 §14.8.4.4에서는 LI가 L(목록)의 직계 자식이고 LBody가 LI(목록 항목)의 직계 자식이어야 한다고 요구합니다. 잘못된 목록 중첩은 보조 기술이 목록을 올바르게 탐색하지 못하게 합니다. 모든 목록 관련 요소의 BeginTag / EndTag 호출 순서를 확인하십시오 |
| ROLEMAP-UNMAPPED:N | 문서에 N개의 사용자 지정 구조 요소 유형이 있지만 /RoleMap 사전에 항목이 없습니다 ISO 14289-1 §7.1 및 ISO 32000-1 §14.7.3은 보조 기술이 요소 처리 방법을 판단할 수 있도록 모든 비표준 구조 유형을 표준 PDF 유형에 매핑하도록 요구합니다 저장하기 전에 각 사용자 지정 유형에 대해 AddRoleMap을 호출합니다 문제 설명에는 매핑되지 않은 유형 이름이 나열됩니다 |
| SUSPECTS-TRUE | MarkInfo/Suspects가 true로 설정되어 있습니다. ISO 14289-1 §7.1은 PDF/UA 준수를 주장하는 파일의 Suspects 값이 false여야 한다고 요구합니다. true는 태그 지정에 알려진 오류가 있음을 나타냅니다. 문서 태그 지정을 완료한 후 SetMarkInfo를 호출하여 Suspects를 false로 재설정하세요 |
| ROLEMAP-STANDARD-REMAP:N | N개의 표준 구조 유형이 /RoleMap에 "custom" 키로 표시되어 저장 시 다시 매핑됩니다. ISO 14289-1 §7.1에서는 ISO 32000-1 §14.8.4에 정의된 표준 태그(P, H1..H6, Figure, Table 등)의 재매핑을 금지합니다. 상세 줄에는 문제가 되는 표준 태그 이름이 나열됩니다. 영향을 받는 AddRoleMap 호출을 제거하십시오 |
| DC-TITLE-MISSING | XMP 메타데이터 스트림의 Dublin Core dc:title이 없거나 비어 있습니다. ISO 14289-1 §7.1에서는 Metadata 스트림에 문서를 명확히 식별하는 dc:title 항목이 있어야 합니다. 이 검사는 /Info /Title 항목만 검사하는 DOCINFO-TITLE-MISSING과 별개입니다. /Info 제목을 XMP 패킷으로 복사하려면 SetPDFUAMode를 호출합니다 |
| TRAPNET-ANNOT:N | 문서 페이지에서 N개의 TrapNet 주석을 찾았습니다. ISO 14289-1 §7.18.2는 PDF/UA-1 준수 파일에서 TrapNet을 명시적으로 금지합니다. 저장하기 전에 해당 주석을 제거합니다 |
| ANNOT-PAGE-NO-TABS-S:N | N개 페이지에 하나 이상의 주석이 있지만 페이지 사전에 /Tabs /S가 설정되지 않았습니다. ISO 14289-1 §7.18.3은 해당 페이지의 탭 순서가 /Tabs /S로 표시된 구조 트리를 따르도록 요구합니다. 주석이 있는 모든 페이지 사전에 /Tabs /S를 설정합니다 |
| ENCRYPT-NO-ACCESS | 문서가 암호화되어 있고 PDFUAMode가 활성 상태이지만 암호화 /P 권한 키의 비트 10(마스크 $200, 접근성 추출)이 지워져 있습니다. ISO 14289-1 §7.16에서는 암호화된 모든 준수 파일이 접근성 추출을 허용해야 합니다. Encrypt 호출 전에 PDFUAMode를 설정하면 이 비트가 자동으로 강제 설정됩니다. 호출 순서가 반대이면 암호화 사전에 이미 이전 /P 값이 있습니다 — 사전을 다시 내보내도록 Encrypt를 다시 호출합니다 |
| FIRST-HEADING-NOT-H1 | 문서 순서의 첫 번째 제목 요소가 H1이 아닙니다(강한 구조의 H 센티널도 수준 1로 간주). ISO 14289-1 §7.4.2에서는 강한 구조가 아닌 문서의 첫 제목 태그가 H1이어야 한다고 요구합니다. 상세 줄에는 문제가 있는 수준이 표시됩니다 |
| WIDGET-NO-STRUCTPARENT:N | N개의 Widget 주석에 /StructParent 항목이 없습니다. ISO 14289-1 §7.18.4에서는 Widget 주석을 Form 구조 태그 안에 중첩해야 합니다. /StructParent가 없으면 구조 트리에서 Widget에 전혀 접근할 수 없습니다. 상세 줄에 개수가 보고됩니다. 이는 부분 검사이며 — 확인된 부모 /S가 Form인지 완전히 검증하는 기능은 아직 구현되지 않았습니다 |
| LIST-NO-NUMBERING:N | N개의 L(목록) 구조 요소에 ListNumbering 속성이 없습니다. ISO 14289-1 §7.6은 모든 L 태그가 이 속성으로 번호 매기기 스타일을 선언하도록 요구합니다. ISO 32000-1 Table 347에 따른 유효 값은 None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha입니다. 각 L 태그를 연 뒤 SetStructElemListNumbering을 호출합니다 |
| MULTIPLE-H-CHILDREN:N | N개의 구조 트리 노드에 둘 이상의 직접 H(일반 머리글) 자식이 있습니다. ISO 14289-1 §7.4.4에서는 이를 금지하므로 상위 섹션을 나누거나 H 태그를 번호가 지정된 H1..H6 시퀀스로 대체하십시오 |
반환 값
줄바꿈으로 구분된 문제 설명 문자열이며, 적합성 문제가 감지되지 않으면 빈 문자열입니다
비고
이 함수는 개발자용 진단 도구입니다. 메모리에 있는 문서의 현재 상태를 확인하고 PDF/UA-1 검증 실패를 일으킬 수 있는 문제를 보고합니다. 저장하기 전에 문제를 식별하려면 문서를 불러오거나 구성한 후 호출합니다
SetPDFUAMode가 활성화된 상태에서 문서를 저장하면 여러 문제(ANNOT-NO-CONTENTS, EMBED-NO-AFR)가 저장 중 자동 수정됩니다. GetPDFUADiagnostics는 저장 전 상태를 보고하므로 저장 시 자동 수정될 문제도 저장 전에 있으면 계속 나열됩니다
이 함수는 문서를 수정하지 않습니다
예제
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;참고 항목
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship