GetPDFUADiagnosticsA
PDF/UA i dostępność
Opis
Końcowa litera A oznacza punkt wejścia DLL ANSI (char); powierzchnia ActiveX/COM udostępnia wyłącznie postać Unicode. Zachowanie jest identyczne jak w GetPDFUADiagnostics, a argumenty ciągów są interpretowane przy użyciu bieżącej strony kodowej SetAnsiMode
Zwraca rozdzielaną znakami nowego wiersza listę potencjalnych problemów zgodności z PDF/UA-1 (ISO 14289-1) znalezionych w bieżącym dokumencie. Każdy wiersz zawiera kod problemu, dwukropek i opis czytelny dla człowieka. Zwraca pusty ciąg, gdy nie wykryto problemów
Składnia
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
Kody problemów
| PDF-VERSION-LOW | Wersja PDF dokumentu (zapisana w nagłówku pliku) jest niższa niż 1.7. PDF/UA-1 zdefiniowano względem ISO 32000-1:2008 (PDF 1.7). Wywołaj SetPDFUAMode, aby automatycznie podnieść wersję do 1.7 |
|---|---|
| MARKED-FALSE | MarkInfo/Marked nie ma wartości true; dokument nie jest tagowanym plikiem PDF |
| LANG-MISSING | Wpis /Lang katalogu dokumentu jest nieobecny lub pusty. ISO 14289-1 §7.3 wymaga deklaracji języka naturalnego |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle nie ma wartości true. ISO 14289-1 §7.1 wymaga tego, aby tytuł dokumentu był wyświetlany na pasku tytułu |
| DOCINFO-TITLE-MISSING | Wpis /Title słownika informacji o dokumencie jest nieobecny lub pusty. PDF/UA-1 wymaga tytułu dokumentu, aby technologia wspomagająca mogła go odczytać po otwarciu dokumentu. Ta kontrola uzupełnia DISPLAYDOCTITLE-FALSE: tamta sprawdza, czy tytuł jest wyświetlany w przeglądarce, a ta sprawdza istnienie samej wartości tytułu. Wywołaj SetInformation z kluczem Title, aby ją ustawić |
| XMP-NO-PDFUAID | Strumień metadanych XMP nie zawiera wpisu pdfuaid:part. Jest on wymagany przez ISO 14289-1 §7.2 |
| ANNOT-NO-CONTENTS:N | W N adnotacjach nieobjętych wyjątkiem (z wyłączeniem podtypów Widget, PrinterMark i TrapNet) brakuje wpisu Contents. Jest on wymagany przez ISO 14289-1 §7.18.1 |
| EMBED-NO-AFR:N | W N osadzonych plikach brakuje wpisu AFRelationship w słowniku specyfikacji pliku. Jest on wymagany przez ISO 14289-1 §7.11 |
| FIGURE-NO-ALT:N | N elementów struktury Figure lub Formula nie ma wartości tekstu Alt. ISO 14289-1 §7.5 i ISO 32000-1 §14.9.3 wymagają opisów alternatywnych zarówno dla figur graficznych, jak i wzorów matematycznych |
| HEADING-LEVEL-SKIP:N | W kolejności dokumentu wykryto N przeskoków poziomu nagłówka (np. H1, po którym bezpośrednio następuje H3 z pominięciem H2). ISO 14289-1 §7.1 i kryterium sukcesu WCAG 2.x 1.3.1 wymagają zagnieżdżania nagłówków bez luk |
| STRUCT-UNCLOSED:N | N elementów struktury pozostaje otwartych, ponieważ EndTag nie wywołano właściwą liczbę razy. Tych elementów zabraknie w korzeniu drzewa struktury |
| TABLE-TH-NO-SCOPE:N | N elementów struktury TH (komórek nagłówka tabeli) nie ma atrybutu Scope. ISO 32000-1 §14.8.4.3.4 Table 337 definiuje Scope (Row, Column lub Both) jako atrybut opisujący, których komórek danych dotyczy każda komórka nagłówka. Bez niego technologia wspomagająca nie może niezawodnie powiązać nagłówków z komórkami danych w tabelach złożonych lub wielonagłówkowych. Wywołaj SetStructElemScope (albo AddTagAttribute z Owner='Table', Name='Scope') bezpośrednio po oznaczeniu każdego elementu TH |
| FORM-NO-TOOLTIP:N | W N interaktywnych polach formularza (adnotacjach Widget) brakuje wpisu TU (podpowiedzi / dostępnej nazwy). ISO 14289-1 §7.18.4 wymaga wpisu TU we wszystkich interaktywnych polach formularza, aby technologia wspomagająca mogła przedstawić użytkownikowi przeznaczenie pola. /TU jest dostępną nazwą odczytywaną przez czytniki ekranu i różni się od /T (częściowej nazwy pola używanej programowo). Ustaw wartość TU podczas tworzenia lub wczytywania pól formularza |
| LIST-STRUCT:N | N elementów struktury LI lub LBody występuje poza wymaganym elementem nadrzędnym. ISO 32000-1 §14.8.4.4 wymaga, aby LI było bezpośrednim elementem podrzędnym L (listy), a LBody bezpośrednim elementem podrzędnym LI (elementu listy). Nieprawidłowe zagnieżdżenie list uniemożliwia technologii wspomagającej poprawne poruszanie się po listach. Sprawdź sekwencję wywołań BeginTag / EndTag dla wszystkich elementów związanych z listami |
| ROLEMAP-UNMAPPED:N | W dokumencie występuje N niestandardowych typów elementów struktury bez wpisu w słowniku /RoleMap. ISO 14289-1 §7.1 i ISO 32000-1 §14.7.3 wymagają odwzorowania każdego niestandardowego typu struktury na standardowy typ PDF, aby technologia wspomagająca mogła ustalić sposób obsługi elementu. Przed zapisem wywołaj AddRoleMap dla każdego typu niestandardowego. Opis problemu zawiera nazwy nieodwzorowanych typów |
| SUSPECTS-TRUE | MarkInfo/Suspects ma wartość true. ISO 14289-1 §7.1 wymaga, aby pliki deklarujące zgodność z PDF/UA miały Suspects równe false. Wartość true oznacza, że tagowanie zawiera znane błędy. Po pełnym otagowaniu dokumentu wywołaj SetMarkInfo, aby przywrócić Suspects do false |
| ROLEMAP-STANDARD-REMAP:N | N standardowych typów struktury występuje jako klucz "custom" w /RoleMap i zostałoby ponownie odwzorowanych podczas zapisu. ISO 14289-1 §7.1 zabrania ponownego odwzorowywania standardowych tagów zdefiniowanych w ISO 32000-1 §14.8.4 (P, H1..H6, Figure, Table itd.). Wiersz szczegółów zawiera nazwy nieprawidłowych tagów standardowych. Usuń odpowiednie wywołania AddRoleMap |
| DC-TITLE-MISSING | W strumieniu metadanych XMP brakuje dc:title Dublin Core albo wartość ta jest pusta. ISO 14289-1 §7.1 wymaga, aby strumień Metadata zawierał wpis dc:title jednoznacznie identyfikujący dokument. Ta kontrola jest niezależna od DOCINFO-TITLE-MISSING, które sprawdza wyłącznie wpis /Info /Title. Wywołaj SetPDFUAMode, aby skopiować tytuł /Info do pakietu XMP |
| TRAPNET-ANNOT:N | Na stronach dokumentu znaleziono N adnotacji TrapNet. ISO 14289-1 §7.18.2 wyraźnie zabrania TrapNet w plikach zgodnych z PDF/UA-1. Usuń nieprawidłowe adnotacje przed zapisem |
| ANNOT-PAGE-NO-TABS-S:N | N stron zawiera co najmniej jedną adnotację, ale ich słowniki stron nie ustawiają /Tabs /S. ISO 14289-1 §7.18.3 wymaga, aby kolejność tabulacji na takich stronach odpowiadała drzewu struktury, co sygnalizuje /Tabs /S. Ustaw /Tabs /S w słowniku każdej strony zawierającej adnotacje |
| ENCRYPT-NO-ACCESS | Dokument jest zaszyfrowany i PDFUAMode jest aktywny, ale bit 10 klucza uprawnień szyfrowania /P (maska $200, wyodrębnianie na potrzeby dostępności) jest wyzerowany. ISO 14289-1 §7.16 wymaga, aby każdy zaszyfrowany zgodny plik zezwalał na wyodrębnianie na potrzeby dostępności. Gdy PDFUAMode ustawiono przed wywołaniem Encrypt, bit jest automatycznie wymuszany. Przy odwrotnej kolejności wywołań słownik szyfrowania już istnieje ze starą wartością /P — wywołaj ponownie Encrypt, aby słownik został ponownie zapisany |
| FIRST-HEADING-NOT-H1 | Pierwszy element nagłówka w kolejności dokumentu nie jest H1 (znacznik H dla silnie ustrukturyzowanych dokumentów również liczy się jako poziom 1). ISO 14289-1 §7.4.2 wymaga, aby pierwszy tag nagłówka w dokumencie, który nie jest silnie ustrukturyzowany, miał typ H1. Wiersz szczegółów podaje nieprawidłowy poziom |
| WIDGET-NO-STRUCTPARENT:N | W N adnotacjach Widget brakuje wpisu /StructParent. ISO 14289-1 §7.18.4 wymaga zagnieżdżenia adnotacji Widget w tagu struktury Form; bez /StructParent do Widget nie można w ogóle dotrzeć z drzewa struktury. Wiersz szczegółów podaje liczbę. Jest to kontrola częściowa — pełna weryfikacja, czy rozwiązany element nadrzędny /S ma wartość Form, nie została jeszcze zaimplementowana |
| LIST-NO-NUMBERING:N | W N elementach struktury L (listach) brakuje atrybutu ListNumbering. ISO 14289-1 §7.6 wymaga, aby każdy tag L deklarował styl numeracji za pomocą tego atrybutu (prawidłowe wartości według ISO 32000-1 Table 347 to None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Po otwarciu każdego tagu L wywołaj SetStructElemListNumbering |
| MULTIPLE-H-CHILDREN:N | N węzłów drzewa struktury zawiera więcej niż jeden bezpośredni element podrzędny H (nagłówek ogólny). ISO 14289-1 §7.4.4 tego zabrania — podziel sekcję nadrzędną albo zastąp tagi H numerowanymi sekwencjami H1..H6 |
Wartość zwracana
Rozdzielany znakami nowego wiersza ciąg opisów problemów albo pusty ciąg, jeśli nie wykryto problemów zgodności
Uwagi
Ta funkcja jest pomocą diagnostyczną dla programistów. Sprawdza bieżący stan dokumentu w pamięci i zgłasza problemy, które mogą spowodować niepowodzenie walidacji PDF/UA-1. Wywołaj ją po wczytaniu lub utworzeniu dokumentu, aby wykryć problemy przed zapisem
Gdy SetPDFUAMode jest aktywny i dokument zostaje zapisany, kilka problemów (ANNOT-NO-CONTENTS, EMBED-NO-AFR) jest automatycznie korygowanych podczas zapisu. GetPDFUADiagnostics raportuje stan sprzed zapisu; problemy, które zostaną automatycznie skorygowane podczas zapisu, nadal są wymieniane, jeśli występują przed zapisem
Ta funkcja nie modyfikuje dokumentu
Przykład
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;Zobacz również
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship