เมธอด THotPDF.ValidatePDFUA2Structure
รันการตรวจสอบโครงสร้าง PDF/UA-2 แบบมีขอบเขตกับ object graph ที่สร้างหรือโหลดมา แล้วคืนผลวินิจฉัยแบบมีโครงสร้างที่เสถียรโดยไม่แก้ไขเอกสาร
การประกาศ
function ValidatePDFUA2Structure(
const Options: THPDFUA2ValidationOptions;
out Issues: THPDFUA2ValidationIssues): boolean; overload;
function ValidatePDFUA2Structure(
const Options: THPDFUA2ValidationOptions;
out Findings: THPDFComplianceFindings): boolean; overload;
ยูนิต
HPDFDoc
ตัวเลือกการตรวจสอบ
ใช้ THPDFUA2ValidationOptions.Default สำหรับการตรวจตอนสร้างแบบเข้มงวด หรือปรับ semantic policy แต่ละตัวเองสำหรับผลวินิจฉัยตอนรับเข้า
| ฟิลด์ | วัตถุประสงค์ |
|---|---|
HeadingPolicy | เลือกละเลย วินิจฉัย หรือปฏิเสธระดับ heading ที่ข้าม |
AllowDocumentFragmentHeadingStarts | รีเซ็ตบริบท heading ภายใน DocumentFragment |
CheckDocumentSemantics | ตรวจภาษาของ Catalog, metadata, title ที่แสดง, optional content และ embedded file |
CheckHumanReadableStrings | ปฏิเสธอักขระ Unicode private-use ใน string ที่คนอ่าน |
CheckAnnotationSemantics | ตรวจลำดับ tab ของหน้า, ความเป็นเจ้าของ annotation, role, flag, คำอธิบาย และ appearance stream |
CheckFormSemantics | ตรวจฟิลด์ AcroForm, widget, label, action, option และ rich value |
CheckNavigationSemantics | ตรวจ structure destination, outline และ page-label number tree ที่ซ้อนกัน |
RequireListLabels | บังคับว่ารายการแบบมีเลขแต่ละรายการต้องมี Lbl หนึ่งตัว |
RequireExplicitTableHeaderAssociations | รายงาน data cell ที่พึ่งพาการอนุมาน scope เพียงอย่างเดียว |
CheckListSemantics | ตรวจการนับเลข, continuation chain, caption, label, body และการวาง real content โดยตรง |
CheckTableSemantics | ตรวจ geometry ของ grid แบบมีขอบเขต, row group, span, scope และการเชื่อม header ระดับตาราง |
CheckRubyWarichuSequences | ตรวจลำดับ direct-child ที่ Ruby และ Warichu กำหนดอย่างเป๊ะ |
CheckPronunciationHints | ตรวจชนิด pronunciation entry และ PLS lexicon แบบฝังแบบ indirect |
RequireStructureAssociatedFiles | บังคับว่า associated file ของ catalog ทุกตัวต้องเข้าถึงได้จาก structure |
RequireFormulaTextAlternative | บังคับว่า formula ต้องมี Alt, ActualText หรือ MathML ที่เกี่ยวข้อง |
MaxObjects | จำกัดการสแกน indirect object ค่า default คือ 1,000,000 objects |
MaxIssues | จำกัดผลวินิจฉัยที่เก็บไว้ ค่า default คือ 256 issues |
ค่าที่ส่งกลับ
ส่งคืน True เฉพาะเมื่อไม่เหลือผลวินิจฉัย uisError
การวินิจฉัย
THPDFUA2IssueSeverity แยก warning ออกจาก error ส่วน THPDFUA2ValidationIssue แต่ละตัวจะพา code แบบมี namespace ที่เสถียร, clause ที่เกี่ยวข้อง, object path, object number, ดัชนีหน้าแบบฐานศูนย์เมื่อทราบ และข้อความที่คนอ่านเข้าใจ ในอาร์เรย์ THPDFUA2ValidationIssues
- การตรวจไม่สร้าง
StructTreeRootหรือ namespace dictionary ที่หายไปขึ้นมาเอง - role map ที่คำนึงถึง namespace ถูก resolve แบบทรานซิทีฟพร้อมตรวจจับ cycle และความลึก
- metadata ของเอกสาร, string ที่คนอ่าน, optional content, structure element, parent backlink, attribute, annotation, form, navigation, associated file, heading, list, table, Ruby, Warichu, pronunciation hint, formula และ MathML ถูกตรวจในรอบเดียวแบบมีขอบเขต
- ความเป็นเจ้าของ annotation ที่โหลดมาถูก resolve จาก ParentTree ทางกายภาพ และรองรับ entry
Kทั้งแบบ scalar และ array โดยไม่พึ่ง state ฝั่ง producer - navigation ภายในเอกสารบังคับใช้ structure destination, ใช้
SDก่อน fallbackDที่ใช้กันได้ และตรวจ page-label number tree ที่ซ้อนกัน - property XMP ถูก resolve ด้วย namespace URI จึงใช้ prefix สำรองที่ถูกต้องร่วมกับระบบอื่นได้
- ผลตรวจตารางแยกแยะ span ไม่ถูกต้อง, cell ทับซ้อน, แถวและ row group ที่ไม่เป็นระเบียบ, ID ข้ามตาราง, header reference ซ้ำหรือวนกันเอง และการเชื่อมโยงเชิงอัลกอริทึมที่ขาดหาย
- ผลตรวจรายการแยกแยะการนับเลขไม่ถูกต้อง, content ที่ไม่ถูกห่อ, โครงสร้าง label และ body, continuation reference ระดับเดียวกันแบบมีลำดับ และ continuation ที่วนกันเอง
- geometry ตารางแบบขยายใช้ขอบเขต
MaxObjectsร่วมกัน และ fail closed ด้วยua2.table.limit.cells ua2.limit.objectsfail closed ก่อนสแกน graph ที่ใหญ่เกิน
ผลตรวจแบบ machine-readable
overload แบบ THPDFComplianceFindings เปลี่ยนรอบการตรวจแบบมีขอบเขตชุดเดียวกันให้เป็น compliance model ที่ใช้ร่วมกัน โดยไม่เปลี่ยนลำดับการตรวจและไม่แก้ไข graph
finding แต่ละตัวระบุ PDF/UA-2, severity, rule ID, clause ของมาตรฐาน, path, object number, ดัชนีหน้า, ข้อความ และสถานะซ่อมแซม crsNotAttempted