GetPDFUADiagnosticsA
PDF/UA & Erişilebilirlik
Açıklama
Sondaki A, ANSI (char) DLL giriş noktasını belirtir; ActiveX/COM yüzeyi yalnızca Unicode biçimini sunar. Davranış GetPDFUADiagnostics ile aynıdır ve dize bağımsız değişkenleri geçerli SetAnsiMode kod sayfası kullanılarak yorumlanır
Geçerli belgede bulunan olası PDF/UA-1 (ISO 14289-1) uyumluluk sorunlarının yeni satırla ayrılmış listesini döndürür. Her satırda bir sorun kodu, iki nokta ve insan tarafından okunabilir açıklama bulunur. Sorun algılanmazsa boş bir dize döndürür
Sözdizimi
Delphi
Function DLGetPDFUADiagnosticsA(InstanceID: Integer): PAnsiChar;
DLL
const char * DLGetPDFUADiagnosticsA(int InstanceID);
Sorun kodları
| PDF-VERSION-LOW | Belgenin PDF sürümü (dosya başlığında kaydedildiği biçimde) 1.7'nin altındadır. PDF/UA-1, ISO 32000-1:2008 (PDF 1.7) temelinde tanımlanır. Sürümü otomatik olarak 1.7'ye yükseltmek için SetPDFUAMode çağrısını yapın |
|---|---|
| MARKED-FALSE | MarkInfo/Marked true olarak ayarlı değil; belge etiketli PDF değil |
| LANG-MISSING | Belge kataloğundaki /Lang girdisi yok veya boş. ISO 14289-1 §7.3 bir doğal dil bildirimi gerektirir |
| DISPLAYDOCTITLE-FALSE | ViewerPreferences/DisplayDocTitle true değil. Belge başlığının başlık çubuğunda gösterilmesi için ISO 14289-1 §7.1 tarafından gereklidir |
| DOCINFO-TITLE-MISSING | Belge bilgi sözlüğünün /Title girdisi yok veya boş. PDF/UA-1, belge açıldığında yardımcı teknolojinin duyurabilmesi için belge başlığı gerektirir. Bu denetim DISPLAYDOCTITLE-FALSE denetimini tamamlar: o denetim başlığın görüntüleyicide gösterildiğini, bu denetim ise başlık değerinin kendisinin bulunduğunu doğrular. Ayarlamak için SetInformation işlevini Title anahtarıyla çağırın |
| XMP-NO-PDFUAID | XMP meta veri akışı bir pdfuaid:part girdisi içermiyor. ISO 14289-1 §7.2 tarafından zorunlu tutulur |
| ANNOT-NO-CONTENTS:N | N muaf olmayan ek açıklamada (Widget, PrinterMark ve TrapNet alt türleri dışında) Contents girdisi eksik. ISO 14289-1 §7.18.1 tarafından zorunlu kılınır |
| EMBED-NO-AFR:N | N gömülü dosyanın dosya belirtimi sözlüğünde bir AFRelationship girdisi eksik. ISO 14289-1 §7.11 tarafından zorunlu tutulur |
| FIGURE-NO-ALT:N | N Figure veya Formula yapı öğesinde Alt metin değeri yok. ISO 14289-1 §7.5 ve ISO 32000-1 §14.9.3 hem grafik şekiller hem de matematiksel formüller için alternatif açıklamalar gerektirir |
| HEADING-LEVEL-SKIP:N | Belge sırasına göre N başlık düzeyi atlaması algılandı (ör. H1'in hemen ardından H2 atlanarak H3 gelmesi). ISO 14289-1 §7.1 ve WCAG 2.x Success Criterion 1.3.1, başlıkların boşluk olmadan iç içe geçmesini gerektirir |
| STRUCT-UNCLOSED:N | EndTag doğru sayıda çağrılmadığı için N yapı öğesi hâlâ açık. Bu öğeler yapı ağacı kökünde eksik olur |
| TABLE-TH-NO-SCOPE:N | N TH (tablo başlık hücresi) yapı öğesinde Scope özniteliği yok. ISO 32000-1 §14.8.4.3.4 Table 337, Scope (Row, Column veya Both) değerini her başlık hücresinin hangi veri hücrelerine uygulandığını açıklayan öznitelik olarak tanımlar. Bu öznitelik olmadan yardımcı teknoloji, karmaşık veya birden çok başlıklı tablolarda başlıkları veri hücreleriyle güvenilir biçimde ilişkilendiremez. Her TH öğesini etiketledikten hemen sonra SetStructElemScope (veya AddTagAttribute ile Owner='Table', Name='Scope') çağırın |
| FORM-NO-TOOLTIP:N | N etkileşimli form alanında (Widget ek açıklaması) TU (araç ipucu / erişilebilir ad) girdisi eksik. ISO 14289-1 §7.18.4, yardımcı teknolojinin alanın amacını kullanıcıya bildirebilmesi için tüm etkileşimli form alanlarının TU girdisi taşımasını gerektirir. /TU, ekran okuyucuların sesli okuduğu erişilebilir addır; programlı kullanılan kısmi alan adı /T'den farklıdır. Form alanlarını oluştururken veya yüklerken TU değerini ayarlayın |
| LIST-STRUCT:N | N adet LI veya LBody yapı öğesi gerekli üst öğelerinin dışında görünüyor. ISO 32000-1 §14.8.4.4, LI öğesinin L (liste) öğesinin doğrudan alt öğesi; LBody öğesinin de LI (liste öğesi) öğesinin doğrudan alt öğesi olmasını gerektirir. Hatalı liste iç içeliği yardımcı teknolojilerin listelerde doğru gezinmesini engeller. Listeyle ilgili tüm öğeler için BeginTag / EndTag çağrı sırasını denetleyin |
| ROLEMAP-UNMAPPED:N | Belgede N özel yapı öğesi türü görünüyor ancak /RoleMap sözlüğünde girdileri yok. ISO 14289-1 §7.1 ve ISO 32000-1 §14.7.3, yardımcı teknolojinin öğeyi nasıl işleyeceğini belirleyebilmesi için standart dışı her yapı türünün standart bir PDF türüne eşlenmesini gerektirir. Kaydetmeden önce her özel tür için AddRoleMap çağrısını yapın. Sorun açıklaması eşlenmemiş tür adlarını listeler |
| SUSPECTS-TRUE | MarkInfo/Suspects true olarak ayarlanmıştır. ISO 14289-1 §7.1, PDF/UA uyumluluğu bildiren dosyaların Suspects değerinin false olmasını gerektirir. true değeri, etiketlemenin hata içerdiğinin bilindiğini belirtir. Suspects değerini false olarak sıfırlamak için belge tamamen etiketlendikten sonra SetMarkInfo çağrısını yapın |
| ROLEMAP-STANDARD-REMAP:N | N standart yapı türü, /RoleMap içinde "custom" anahtarı olarak görünür ve kaydetme sırasında yeniden eşlenir. ISO 14289-1 §7.1, ISO 32000-1 §14.8.4 içinde tanımlanan standart etiketlerin (P, H1..H6, Figure, Table vb.) yeniden eşlenmesini yasaklar. Ayrıntı satırı hatalı standart etiket adlarını listeler. Etkilenen AddRoleMap çağrılarını kaldırın |
| DC-TITLE-MISSING | XMP meta veri akışının Dublin Core dc:title alanı eksik veya boştur. ISO 14289-1 §7.1, Metadata akışının belgeyi açıkça tanımlayan bir dc:title girdisi içermesini gerektirir. Bu denetim yalnızca /Info /Title girdisini inceleyen DOCINFO-TITLE-MISSING denetiminden ayrıdır. /Info başlığını XMP paketine kopyalamak için SetPDFUAMode çağrısı yapın |
| TRAPNET-ANNOT:N | Belge sayfalarında N TrapNet ek açıklaması bulundu. ISO 14289-1 §7.18.2, PDF/UA-1 uyumlu dosyalarda TrapNet kullanımını açıkça yasaklar. Kaydetmeden önce sorunlu ek açıklamaları kaldırın |
| ANNOT-PAGE-NO-TABS-S:N | N sayfa bir veya daha fazla ek açıklama taşıyor ancak sayfa sözlüklerinde /Tabs /S ayarlanmamış. ISO 14289-1 §7.18.3, bu tür sayfalardaki sekme sırasının /Tabs /S ile belirtilen yapı ağacını izlemesini gerektirir. Ek açıklama içeren her sayfanın sayfa sözlüğünde /Tabs /S ayarlayın |
| ENCRYPT-NO-ACCESS | Belge şifreli ve PDFUAMode etkin, ancak şifreleme /P izin anahtarının 10. biti ($200 maskesi, erişilebilirlik ayıklama) temiz. ISO 14289-1 §7.16, şifrelenmiş her uyumlu dosyanın erişilebilirlik ayıklamasına izin vermesini gerektirir. PDFUAMode Encrypt çağrısından önce ayarlandığında bit otomatik olarak zorlanır. Çağrı sırası ters olduğunda şifreleme sözlüğü eski /P değeriyle zaten yerindedir — sözlüğün yeniden üretilmesi için Encrypt çağrısını yeniden yapın |
| FIRST-HEADING-NOT-H1 | Belge sırasındaki ilk başlık öğesi H1 değildir (güçlü yapılandırılmış H gözcüsü de düzey 1 sayılır). ISO 14289-1 §7.4.2, güçlü yapılandırılmamış bir belgedeki ilk başlık etiketinin H1 olmasını gerektirir. Ayrıntı satırı sorunlu düzeyi adlandırır |
| WIDGET-NO-STRUCTPARENT:N | N Widget ek açıklamasında /StructParent girdisi yok. ISO 14289-1 §7.18.4, Widget ek açıklamalarının Form yapı etiketi içine yerleştirilmesini gerektirir; /StructParent olmadan Widget yapı ağacından hiçbir biçimde erişilemez. Ayrıntı satırı sayıyı bildirir. Bu kısmi bir denetimdir — çözülen üst öğenin /S değerinin Form olduğunun tam doğrulaması henüz uygulanmamıştır |
| LIST-NO-NUMBERING:N | N L (liste) yapı öğesinde ListNumbering özniteliği yok. ISO 14289-1 §7.6, her L etiketinin numaralandırma stilini bu öznitelikle bildirmesini gerektirir (ISO 32000-1 Table 347 uyarınca geçerli değerler None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha, LowerAlpha). Her L etiketini açtıktan sonra SetStructElemListNumbering çağrısı yapın |
| MULTIPLE-H-CHILDREN:N | N yapı ağacı düğümü birden fazla doğrudan H (genel başlık) alt öğesi içeriyor. ISO 14289-1 §7.4.4 bunu yasaklar — üst bölümü ayırın veya H etiketlerini numaralı H1..H6 dizileriyle değiştirin |
Dönüş değeri
Yeni satırla ayrılmış sorun açıklamaları dizesi veya hiçbir uygunluk sorunu algılanmazsa boş dize
Açıklamalar
Bu işlev geliştiriciler için bir tanılama yardımcısı olarak tasarlanmıştır. Bellekteki belgenin geçerli durumunu denetler ve PDF/UA-1 doğrulama hatalarına yol açabilecek sorunları bildirir. Kaydetmeden önce sorunları belirlemek için bir belgeyi yükledikten veya oluşturduktan sonra çağırın
SetPDFUAMode etkin olduğunda ve belge kaydedildiğinde çeşitli sorunlar (ANNOT-NO-CONTENTS, EMBED-NO-AFR) kaydetme sırasında otomatik düzeltilir. GetPDFUADiagnostics kayıt öncesi durumu bildirir; kaydetme sırasında otomatik düzeltilecek sorunlar, kaydetmeden önce mevcutsa yine listelenir
Bu işlev belgeyi değiştirmez
Örnek
var
Diag: WideString;
begin
PDFlib.SetPDFUAMode('en-US');
// ... build document
Diag := PDFlib.GetPDFUADiagnostics;
if Diag <> '' then
ShowMessage('PDF/UA issues found:'#10 + Diag);
end;Ayrıca bkz
SetPDFUAMode, SetDocumentLanguage, SetEmbeddedFileAFRelationship