CheckFileComplianceA

Uyumluluk, Belge inceleme

Açıklama

Sondaki A, ANSI (char) DLL giriş noktasını belirtir; ActiveX/COM yüzeyi yalnızca Unicode biçimini sunar. Davranış CheckFileCompliance ile aynıdır ve dize bağımsız değişkenleri geçerli SetAnsiMode kod sayfası kullanılarak yorumlanır

Harici bir PDF dosyasını okur ve seçilen ISO uyumluluk standardına göre doğrular. Döndürülen değer sıfır (dosya seçilen testi hatasız geçer) veya algılanan her sorunu listeleyen sıfır olmayan bir StringListID tanıtıcısıdır. Listedeki her girdi kısa bir kod, iki nokta üst üste ve insan tarafından okunabilir bir iletiden oluşur — tam olarak GetPDFUADiagnostics tarafından kullanılan kod biçimi. Sonucu GetStringListCount ve GetStringListItem ile numaralandırın

PDF/A testi altı uygunluk modunun tümünü (PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-3a, PDF/A-3b) kapsar ve uygulanacak kural kümesini belirlemek için pdfaid:part/pdfaid:conformance XMP girdilerini okur

PDF/UA-1 testi (v3.56.0 sürümünde eklendi), harici bir PDF'yi ISO 14289-1'e göre denetler ve 10xxx aralığında tanılama kodları yayar; böylece bunlar PDF/A 00xxx kodlarından görsel olarak ayrı kalır

Sözdizimi

Delphi

Function DLCheckFileComplianceA(InstanceID: Integer; InputFileName, Password: PAnsiChar; ComplianceTest, Options: Integer): Integer;

DLL

int DLCheckFileComplianceA(int InstanceID, const char * InputFileName, const char * Password, int ComplianceTest, int Options);

Parametreler

InputFileNameDoğrulanacak PDF dosyasının tam yolu. Dosya salt okunur olarak açılır ve değiştirilmez
PasswordDosyayı açmak için kullanılan parola. Şifrelenmemiş belgeler için boş bir dize geçirin. Doğru parola sağlanıp sağlanmadığına bakılmaksızın şifrelenmiş bir belgenin PDF/A testinde (code 00006) başarısız olacağını unutmayın — PDF/A şifrelemeyi yasaklar
ComplianceTestDenetlenecek standart.

1 — PDF/A (ISO 19005-1/-2/-3, altı uyumluluk düzeyinin tümü).
2 — PDF/UA-1 (ISO 14289-1:2014, erişilebilir PDF)
OptionsTesti değiştiren bit bayrakları.

0 — Varsayılan: belgede bulunan her sorunu bildirir.
1 — İlk sorundan sonra durur ve hemen döner. Çağırıcı yalnızca başarı/başarısızlık sinyaline ihtiyaç duyduğunda kullanışlıdır

Dönüş değerleri

0Dosya seçilen standarda uygundur
Non-zeroGirdileri algılanan her uygunsuzluğu açıklayan bir StringListID tanıtıcısı. Tanıtıcı belge kapatılana veya ReleaseStringList çağrılana kadar geçerli kalır

PDF/A sorun kodları (ComplianceTest = 1)

00002PDF sürümü uygunluk düzeyinin izin verdiği üst sınırı aşıyor (PDF/A-1 en fazla 1.4; PDF/A-2 ve PDF/A-3 en fazla 1.7). Ayrıntı satırı kurala aykırı sürümü ve izin verilen en yüksek sürümü belirtir
00003Catalog, PDF/A-1 tarafından yasaklanan /OCProperties (isteğe bağlı içerik / katmanlar) içerir. PDF/A-2 ve PDF/A-3 katmanlara izin verir ve bu denetimi tetiklemez
00005XMP pdfaid:part+pdfaid:conformance çifti eksik, hatalı biçimlendirilmiş veya yasal 1A, 1B, 2A, 2B, 3A, 3B kümesinin dışında bir değer içeriyor. Kitaplık hangi kural kümesinin uygulanacağını belirleyemediğinden bu durum Options değerinden bağımsız olarak önemli bir sorun şeklinde bildirilir
00006Belge şifreli. PDF/A tüm bölümlerde şifrelemeyi yasaklar
00007Catalog içinde /OutputIntents girdisi yok. Tüm PDF/A bölümleri işleme renk uzayının kesin tanımlanması için bir çıktı amacı gerektirir
00011Catalog içinde /MarkInfo girdisi yoktur. Yalnızca a düzeyi uyumluluğu (PDF/A-1a, 2a, 3a) için gereklidir — etiketli PDF kendisini bildirmelidir
00012Catalog içinde /StructTreeRoot girdisi yok. Yalnızca a düzeyi uyumluluğu için gereklidir. Etiketli PDF belgesi mantıksal bir yapı ağacına sahip olmalıdır

PDF/UA-1 sorun kodları (ComplianceTest = 2)

10001XMP meta veri akışı pdfuaid:part içermiyor veya değer 1 değil. ISO 14289-1 §5, uyumlu bir dosyanın bu özellik üzerinden kendisini tanımlamasını gerektirir; ISO 14289-1 §6.2 bu olmadan uygunluk bildirilmesini yasaklar
10002Belge Catalog öğesinde /Metadata akışı yok. PDF/UA-1 uyumluluk beyanı bu akışta kaydedilir; bu olmadan dosya kendisini erişilebilir olarak bildiremez
10003Catalog /MarkInfo sözlüğü eksik veya /Marked değeri true değil. ISO 14289-1 §7.1, yardımcı teknolojinin yapı ağacına güvenebilmesi için uyumlu her dosyanın kendisini etiketli olarak bildirmesini gerektirir
10004Catalog içinde /StructTreeRoot girdisi yok. PDF/UA-1 dosyası, belgenin okuma sırasını ve anlamını açıklayan mantıksal bir yapı ağacı içermelidir
10005/ViewerPreferences sözlüğü eksik veya /DisplayDocTitle girdisi true değildir. ISO 14289-1 §7.1, uyumlu okuyucuların pencere başlığında dosya adı yerine belge başlığını göstermesini gerektirir
10006Catalog /Lang girdisi eksik veya boş. ISO 14289-1 §7.2 (ISO 32000-1 §14.9.2 bölümüne atıfta bulunarak), ekran okuyucuların doğru sesi ve telaffuz kurallarını seçebilmesi için her uyumlu dosyanın doğal dilini bildirmesini gerektirir
10007XMP meta veri akışı boş olmayan bir Dublin Core dc:title değeri taşımıyor. ISO 14289-1 §7.1, "belgeyi açıkça tanımlayan bir dc:title girdisi" gerektirir
10008/MarkInfo sözlüğünde /Suspects, true olarak ayarlanmış. ISO 14289-1 §7.1: PDF/UA uyumluluğu bildiren dosyalarda Suspects değeri false olmalıdır — true değeri, etiketlemenin bilinen hatalar içerdiğini belirtir
10009Belge /RoleMap öğesi bir veya daha fazla standart yapı türünü yeniden eşler. ISO 14289-1 §7.1: ISO 32000-1 §14.8.4 içinde tanımlanan standart etiketler (P, H1..H6, Figure, Table vb.) yeniden eşlenmemelidir. Ayrıntı satırı yeniden eşlenen ilk standart etiketi adlandırır
10010Dosya şifrelenmiştir ancak şifreleme /P izin anahtarının 10. biti (maske 512, "Extract for accessibility") ayarlanmamıştır. ISO 14289-1 §7.16, yardımcı teknolojinin içeriğe erişebilmesi için şifrelenmiş her uyumlu dosyanın erişilebilirlik ayıklamasına izin vermesini gerektirir
10011Dinamik bir XFA formu algılandı: XFA XDP paketi <dynamicRender>required</dynamicRender> içeriyor. ISO 14289-1 §7.15, uyumlu dosyalarda dinamik XFA formlarını yasaklar; statik XFA'ya izin verilir
10012Bir Reference XObject (/Ref girdisi taşıyan Form XObject) algılandı. ISO 14289-1 §7.20, bir PDF'nin başvurulan içeriği yardımcı teknolojiye sunmadan başka bir PDF'yi başvuruyla gömmesine izin verdiği için Reference XObject'ları yasaklar
10013Bir veya daha fazla TrapNet açıklaması algılandı. ISO 14289-1 §7.18.2, uyumlu dosyalarda TrapNet kullanımını açıkça yasaklar. Ayrıntı satırı bulunan açıklama sayısını bildirir
10014Bir veya daha fazla sayfa ek açıklamalar 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. Ayrıntı satırı sorunlu sayfaların sayısını bildirir
10015Bir veya daha fazla Link açıklamasında boş olmayan bir /Contents alternatif açıklaması yoktur. ISO 14289-1 §7.18.5, ekran okuyucuların bağlantı hedefini duyurabilmesi için her Link açıklamasının erişilebilir bir açıklama taşımasını gerektirir. Ayrıntı satırı, sorunlu Link açıklamalarının sayısını bildirir
10016Bir veya daha fazla gömülü dosya FileSpec sözlüğünde /F dosya adı anahtarı eksik. ISO 14289-1 §7.11, her gömülü dosya FileSpec öğesinin hem /F hem de /UF taşımasını gerektirir
10017Bir veya daha fazla gömülü dosya FileSpec sözlüğünde /UF Unicode dosya adı anahtarı eksik. ISO 14289-1 §7.11, her gömülü dosya FileSpec öğesinin hem /F hem /UF taşımasını gerektirir
10018Bir veya daha fazla isteğe bağlı içerik yapılandırma sözlüğünde boş olmayan bir /Name metin dizesi eksiktir. ISO 14289-1 §7.10, her OCG yapılandırma sözlüğünün (varsayılan D girdisi ile OCProperties/Configs içindeki her sözlük) boş olmayan bir /Name taşımasını gerektirir
10019Bir veya daha fazla isteğe bağlı içerik yapılandırma sözlüğü yasak /AS anahtarını içeriyor. ISO 14289-1 §7.10, kullanım bilgisinin yönlendirdiği otomatik durum ayarlamalarını önlemek için tüm OCG yapılandırma sözlüklerinde /AS değerini açıkça yasaklar
10020Belgenin başvurduğu Standard-14 dışı bir veya daha fazla yazı tipi, yazı tipi programını gömmüyor (FontDescriptor üzerinde FontFile, FontFile2 veya FontFile3 girdisi yok). ISO 14289-1 §7.21.4.1, işleme için kullanılan her yazı tipinin programını gömmesini gerektirir. Type 3 yazı tiplerinin glifleri satır içi CharProcs olduğundan bu denetim atlanır
10021Bir veya daha fazla CIDFontType2 alt yazı tipinde /CIDToGIDMap girdisi eksiktir. ISO 14289-1 §7.21.3.2, gömülü her Type 2 CIDFont'un /CIDToGIDMap (CID'leri glif dizinleriyle eşleyen bir akış veya Identity adı) taşımasını gerektirir
10022Bir veya daha fazla Standard 14 yazı tipine (Helvetica, Times, Courier, Symbol, ZapfDingbats ve bunların kalın / eğik çeşitleri) gömülü yazı tipi programı olmadan başvurulmuştur. ISO 14289-1 §7.21.4 NOT 5, 14 standart Type 1 yazı tipinin gömülmekten muaf olmadığını açıkça belirtir
10023Bir veya daha fazla yazı tipinde /ToUnicode CMap eksik ve yazı tipleri §7.21.7 muafiyet listesiyle eşleşmiyor. Muafiyet listesi önceden tanımlı MacRomanEncoding / MacExpertEncoding / WinAnsiEncoding kodlamalarını, alt CIDFont öğesi Adobe GB1 / CNS1 / Japan1 / Korea1 karakter koleksiyonlarını kullanan Type 0 yazı tiplerini ve sembolik olmayan TrueType yazı tiplerini kapsar
10024Belge sırasındaki ilk başlık öğesi H1 (veya güçlü biçimde yapılandırılmış H) değil. ISO 14289-1 §7.4.2: "Herhangi bir başlık etiketi kullanılıyorsa ilk etiket H1 olmalıdır"
10025Belge sıralamasında bir veya daha fazla başlık düzeyi atlaması algılandı — örneğin H1'in hemen ardından H2 atlanarak H3 gelmesi. ISO 14289-1 §7.4.2, azalan başlık dizilerinin aradaki düzeyleri atlamadan kesin sayısal sırayla ilerlemesini gerektirir
10026Bir veya daha fazla Widget ek açıklamasında /StructParent girdisi yok. ISO 14289-1 §7.18.4, Widget ek açıklamalarının bir Form yapı etiketi içine yerleştirilmesini gerektirir; /StructParent olmadan Widget'a yapı ağacından erişilemez. Ayrıntı satırı sayıyı bildirir
10027Bir veya daha fazla Widget ek açıklamasında /StructParent girdisi var ancak değer StructTreeRoot/ParentTree üzerinden /S = Form içeren bir yapı öğesine çözümlenmiyor. ISO 14289-1 §7.18.4 her Widget ek açıklamasının bir Form yapı etiketi içinde olmasını gerektirir. Olası nedenler: /ParentTree girdisi yok, StructElem olmayan bir değere işaret ediyor veya Form olmayan bir etiketi adlandırıyor
10028Bir veya daha fazla simgesel olmayan TrueType yazı tipinin /Encoding değeri (veya bir Encoding sözlüğü'nün /BaseEncoding değeri) MacRomanEncoding ya da WinAnsiEncoding değildir. ISO 14289-1 §7.21.6, simgesel olmayan TrueType kodlamasını bu iki önceden tanımlı adla sınırlar
10029Bir veya daha fazla simgesel TrueType yazı tipi, yazı tipi sözlüğünde bir /Encoding girdisi taşır. ISO 14289-1 §7.21.6 dördüncü paragraf bunu yasaklar — simgesel TrueType kodlaması yalnızca gömülü yazı tipi programı'nın cmap tablosuyla ifade edilmelidir
10030Bir veya daha fazla L (liste) yapı öğesinde ListNumbering özniteliği yok. ISO 14289-1 §7.6, her L etiketinin numaralandırma stilini bu öznitelikle bildirmesini gerektirir. Geçerli değerler None, Disc, Circle, Square, Decimal, UpperRoman, LowerRoman, UpperAlpha ve LowerAlpha değerleridir (ISO 32000-1 Table 347)
10031Bir veya daha fazla Link ek açıklaması, /IsMap girdisi true olan URI eylem sözlüğü taşıyor. ISO 14289-1 §7.18.5, URI eyleminde /IsMap = true değerini yasaklar; tek istisna, içerikte eşdeğer işlevselliğin /IsMap anahtarı olmadan başka yerde sağlanmasıdır. Geçerli bir IsMap kullanım senaryosu olan yazarlar bu tanılamayı kendileri bastırmalıdır
10032Bir veya daha fazla Note yapı öğesinde /ID girdisi yok. ISO 14289-1 §7.9, çapraz başvuruların kararlı bir hedefe ulaşabilmesi için her Note etiketinin benzersiz bir /ID bildirmesini gerektirir
10033İki veya daha fazla Note yapı öğesi aynı /ID değerini paylaşır. Ayrıntı satırı algılanan yinelenen çiftlerin sayısını bildirir. ISO 14289-1 §7.9, Note kimliklerinin belge içinde benzersiz olmasını gerektirir
10034Bir veya daha fazla simgesel olmayan TrueType programı (FontDescriptor içinde Symbolic bayrağı temizlenmiş, FontFile2 akışı mevcut) yalnızca simgesel (3,0) Microsoft girdisinden oluşan bir alt tabloya sahip cmap tablosu gömer. ISO 14289-1 §7.21.6 ilk paragraf, programın /Encoding tarafından bildirilen kod noktalarını işleyebilmesi için en az bir simgesel olmayan cmap alt tablosu gerektirir
10035Bir veya daha fazla simgesel olmayan TrueType yazı tipi bir /Encoding bildirir; bunun /Differences dizisi Adobe Glyph List 2.0 üyesi olmayan glif adları içerir. Belirtim dolaylı olarak izin verdiği için .notdef izin listesindedir. ISO 14289-1 §7.21.6 üçüncü paragraf, her Differences girdisinin AGL içinde yer almasını gerektirir
10042Bir veya daha fazla medya klibi veri sözlüğünde (/S /MCD ile tanımlanır, isteğe bağlı olarak /Type /MediaClip) gerekli /CT içerik türü girdisi yok. ISO 14289-1 §7.18.6, ISO 32000-1 Table 274 içindeki bu isteğe bağlı anahtarı gerekli hâle getirir
10043Bir veya daha fazla medya klibi veri sözlüğü gerekli /Alt dizisinden (dil dizesi + alternatif metin çiftleri) yoksundur. ISO 14289-1 §7.18.6, yardımcı teknolojinin gömülü multimedya açıklamasını duyurabilmesi için ISO 32000-1 Tablo 274'teki bu isteğe bağlı anahtarı zorunlu hale getirir
10044Bir veya daha fazla yapı ağacı düğümü birden çok doğrudan H (genel başlık) alt öğesi taşıyor. ISO 14289-1 §7.4.4 bunu açıkça yasaklar — bölümü ayırın veya H etiketlerini numaralandırılmış H1..H6 düzeyleriyle değiştirin

Açıklamalar

PDF/A testi teslimden önce hızlı bir öz denetim olarak tasarlanmıştır. Dosyayı doğrudan uygunsuz kılan belge düzeyi sorunlarını yakalar (yanlış PDF sürümü, eksik OutputIntent, A düzeyinde eksik yapı ağacı, şifreleme, PDF/A-1 içindeki katmanlar). Her içerik akışı işlecini dolaşmaz ve boyanan her nesne için yazı tipi gömme veya renk uzayı başvurularını doğrulamaz — bu doğrulamalar özel bir PDF/A doğrulayıcısı (veraPDF gibi) gerektirir. Bu işlevi ilk denetim ve derleme işlem hatlarında regresyon kapısı olarak kullanın. Kitaplığın sorun listelerini yeniden kullanılabilir bir metin raporu olarak biçimlendirmesini istediğinizde CreatePreflightReport veya SavePreflightReport kullanın. Metin, JSON, HTML veya CSV rapor çıktısı için CreatePreflightReportEx ya da SavePreflightReportEx kullanın; eksiksiz rapor iş akışı için Preflight Raporları bölümüne bakın

Tamamlayıcı API GetPDFUADiagnostics, harici bir dosya yerine o anda bellekte oluşturulmakta olan belge üzerinde PDF/UA-1 (ISO 14289-1) için benzer denetimler gerçekleştirir

Bu kitaplıkla PDF/A çıktısı oluştururken herhangi bir içerik eklemeden önce SetPDFAMode çağrısını yapın. SetPDFAMode içindeki oluşturma tarafı koruması, seçilen bölümün yasakladığı işlemleri engeller; bu nedenle bu şekilde oluşturulan bir belge normalde CheckFileCompliance denetimini otomatik olarak geçer

Örnek

// Validate a delivered PDF/A file and print all issues
var
  Issues, Count, I: Integer;
begin
  Issues := PDF.CheckFileCompliance('archive.pdf', '', 1, 0);
  if Issues = 0 then
    WriteLn('archive.pdf: PDF/A conformant')
  else
  begin
    Count := PDF.GetStringListCount(Issues);
    WriteLn('archive.pdf: ', Count, ' PDF/A issue(s) detected:');
    for I := 1 to Count do
      WriteLn('  ', PDF.GetStringListItem(Issues, I));
  end;
end;

// Fast pass/fail gate in a CI pipeline — stop on the first issue
var
  Failed: Boolean;
begin
  Failed := PDF.CheckFileCompliance('build/output.pdf', '', 1, 1) <> 0;
  if Failed then
    Halt(1);
end;

Ayrıca bkz

Preflight Reports, CreatePreflightReport, CreatePreflightReportEx, SavePreflightReport, SavePreflightReportEx, ComparePreflightReports, SetPDFAMode, GetPDFUADiagnostics, GetStringListCount, GetStringListItem, SetPDFUAMode