GetPDFUADiagnosticsA
PDF/UA & accessibilità
Descrizione
Il suffisso A indica l'entry point DLL ANSI (char); l'interfaccia ActiveX/COM espone soltanto la forma Unicode. Il comportamento è identico a GetPDFUADiagnostics e gli argomenti stringa vengono interpretati usando la code page corrente di SetAnsiMode
Restituisce un elenco separato da caratteri di nuova riga dei potenziali problemi di conformità a PDF/UA-1 (ISO 14289-1) rilevati nel documento corrente. Ogni riga contiene un codice problema seguito da due punti e da una descrizione leggibile. Restituisce una stringa vuota quando non viene rilevato alcun problema
Sintassi
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
Codici dei problemi
| PDF-VERSION-LOW | La versione PDF del documento, registrata nell'intestazione del file, è inferiore a 1.7. PDF/UA-1 è definito rispetto a ISO 32000-1:2008 (PDF 1.7). Chiamare SetPDFUAMode per elevare automaticamente la versione a 1.7 |
|---|---|
| MARKED-FALSE | MarkInfo/Marked non è impostato su true; il documento non è un PDF con tag |
| LANG-MISSING | La voce /Lang del catalogo è assente o vuota. ISO 14289-1 §7.3 richiede una dichiarazione di lingua naturale |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle non è true. Richiesto da ISO 14289-1 §7.1 affinché il titolo del documento venga mostrato nella barra del titolo. |
| DOCINFO-TITLE-MISSING | La voce /Title del dizionario informazioni manca o è vuota. PDF/UA-1 richiede un titolo annunciabile dalle tecnologie assistive. È complementare a DISPLAYDOCTITLE-FALSE, che verifica la visualizzazione. Chiamare SetInformation con chiave Title |
| XMP-NO-PDFUAID | Il flusso di metadati XMP non contiene una voce pdfuaid:part, richiesta da ISO 14289-1 §7.2 |
| ANNOT-NO-CONTENTS:N | N annotazioni non esenti (esclusi i sottotipi Widget, PrinterMark e TrapNet) non contengono una voce Contents. Richiesta da ISO 14289-1 §7.18.1. |
| EMBED-NO-AFR:N | N file incorporati non contengono una voce AFRelationship nel rispettivo dizionario di specifica del file. Richiesta da ISO 14289-1 §7.11. |
| FIGURE-NO-ALT:N | N elementi di struttura Figure o Formula non hanno un valore di testo Alt. ISO 14289-1 §7.5 e ISO 32000-1 §14.9.3 richiedono descrizioni alternative sia per le figure grafiche sia per le formule matematiche |
| HEADING-LEVEL-SKIP:N | Rilevati N salti di livello, ad esempio H1 seguito da H3. ISO 14289-1 §7.1 e WCAG 2.x 1.3.1 richiedono intestazioni senza lacune |
| STRUCT-UNCLOSED:N | N elementi di struttura sono ancora aperti perché EndTag non è stato chiamato correttamente. Mancheranno dalla radice dell'albero della struttura. |
| TABLE-TH-NO-SCOPE:N | N elementi TH sono privi di Scope. ISO 32000-1 §14.8.4.3.4 definisce Row, Column o Both per associare intestazioni e dati. Chiamare SetStructElemScope o AddTagAttribute con Owner='Table', Name='Scope' subito dopo ogni TH |
| FORM-NO-TOOLTIP:N | In N campi modulo interattivi, ossia annotazioni Widget, manca una voce TU (descrizione comando o nome accessibile). ISO 14289-1 §7.18.4 richiede che tutti i campi modulo interattivi contengano una voce TU affinché le tecnologie assistive possano comunicarne lo scopo. /TU è il nome accessibile letto ad alta voce dagli screen reader ed è distinto da /T, il nome parziale del campo usato a livello di programmazione. Impostare il valore TU durante la creazione o il caricamento dei campi modulo |
| LIST-STRUCT:N | N elementi di struttura LI o LBody si trovano all'esterno del genitore richiesto. ISO 32000-1 §14.8.4.4 richiede che LI sia figlio diretto di L (elenco) e LBody figlio diretto di LI (elemento dell'elenco). L'annidamento non valido degli elenchi impedisce alle tecnologie assistive di esplorarli correttamente. Controllare la sequenza di chiamate BeginTag / EndTag per tutti gli elementi relativi agli elenchi |
| ROLEMAP-UNMAPPED:N | Nel documento sono presenti N tipi personalizzati di elementi di struttura privi di una voce nel dizionario /RoleMap. ISO 14289-1 §7.1 e ISO 32000-1 §14.7.3 richiedono che ogni tipo di struttura non standard sia associato a un tipo PDF standard, affinché le tecnologie assistive possano determinare come gestire l'elemento. Chiamare AddRoleMap per ogni tipo personalizzato prima del salvataggio. La descrizione del problema elenca i nomi dei tipi non associati |
| SUSPECTS-TRUE | MarkInfo/Suspects è true. ISO 14289-1 §7.1 richiede Suspects false nei file PDF/UA; true indica errori noti nei tag. Chiamare SetMarkInfo dopo aver completato i tag per reimpostarlo su false |
| ROLEMAP-STANDARD-REMAP:N | N tipi di struttura standard compaiono come chiave "custom" in /RoleMap e verrebbero associati nuovamente durante il salvataggio. ISO 14289-1 §7.1 vieta di associare nuovamente i tag standard definiti in ISO 32000-1 §14.8.4, come P, H1..H6, Figure e Table. La riga dei dettagli elenca i nomi dei tag standard non consentiti. Rimuovere le chiamate AddRoleMap interessate |
| DC-TITLE-MISSING | Il valore Dublin Core dc:title del flusso di metadati XMP è mancante o vuoto. ISO 14289-1 §7.1 richiede che il flusso Metadata contenga una voce dc:title che identifichi chiaramente il documento. Questo controllo è distinto da DOCINFO-TITLE-MISSING, che esamina solo la voce /Info /Title. Chiamare SetPDFUAMode per copiare il titolo /Info nel pacchetto XMP |
| TRAPNET-ANNOT:N | Sono state trovate N annotazioni TrapNet. ISO 14289-1 §7.18.2 le vieta in PDF/UA-1. Rimuoverle prima del salvataggio. |
| ANNOT-PAGE-NO-TABS-S:N | N pagine contengono annotazioni ma il relativo dizionario non imposta /Tabs /S. ISO 14289-1 §7.18.3 richiede che l'ordine di tabulazione segua l'albero della struttura, indicato da /Tabs /S. Impostare /Tabs /S in ogni pagina con annotazioni |
| ENCRYPT-NO-ACCESS | Il documento è cifrato e PDFUAMode è attivo, ma il bit 10 della chiave di autorizzazione /P della cifratura (maschera $200, estrazione per l'accessibilità) è azzerato. ISO 14289-1 §7.16 richiede che ogni file conforme cifrato consenta l'estrazione per l'accessibilità. Quando PDFUAMode viene impostato prima di chiamare Encrypt, il bit viene attivato automaticamente. Se l'ordine delle chiamate è opposto, il dizionario di cifratura è già presente con il vecchio valore /P — chiamare nuovamente Encrypt affinché il dizionario venga emesso di nuovo |
| FIRST-HEADING-NOT-H1 | La prima intestazione non è H1; anche H fortemente strutturato vale come livello 1. ISO 14289-1 §7.4.2 richiede H1 come primo tag nei documenti non fortemente strutturati. I dettagli indicano il livello errato |
| WIDGET-NO-STRUCTPARENT:N | N Widget sono privi di /StructParent. ISO 14289-1 §7.18.4 richiede un tag Form; senza /StructParent non sono raggiungibili. I dettagli indicano il conteggio. Controllo parziale — la verifica che /S sia Form non è ancora implementata |
| LIST-NO-NUMBERING:N | N elementi L mancano di ListNumbering. ISO 14289-1 §7.6 richiede uno tra None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha. Chiamare SetStructElemListNumbering dopo ogni tag L |
| MULTIPLE-H-CHILDREN:N | N nodi contengono più di un figlio diretto H. ISO 14289-1 §7.4.4 lo vieta — dividere la sezione o usare sequenze H1..H6 |
Valore restituito
Stringa di descrizioni dei problemi separata da nuove righe oppure stringa vuota se non vengono rilevati problemi di conformità
Note
Questa funzione è concepita come ausilio diagnostico per gli sviluppatori. Controlla lo stato corrente del documento in memoria e segnala i problemi che potrebbero causare errori di convalida PDF/UA-1. Chiamarla dopo il caricamento o la creazione di un documento per individuare i problemi prima del salvataggio
Quando SetPDFUAMode è attivo e il documento viene salvato, diversi problemi (ANNOT-NO-CONTENTS, EMBED-NO-AFR) vengono corretti automaticamente durante il salvataggio. GetPDFUADiagnostics segnala lo stato precedente al salvataggio; i problemi che verranno corretti automaticamente al salvataggio restano elencati se erano presenti prima del salvataggio
Questa funzione non modifica il documento
Esempio
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;Vedere anche
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship