THotPDF.RepairPDFUA2Structure Method

מתקן פגמים שניתנים לשחזור של namespace, תכונות, מבנה ונגישות של PDF/UA-2 בתוך טרנזקציית graph מסוג copy-on-write, ומאמת את ה-graph המועמד לפני commit

הצהרה

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues): boolean; overload;

function RepairPDFUA2Structure(
  const Options: THPDFUA2RepairOptions;
  out Report: THPDFUA2RepairReport;
  out Issues: THPDFUA2ValidationIssues;
  out Findings: THPDFComplianceFindings): boolean; overload;

יחידה

HPDFDoc

אפשרויות תיקון

התחילו מ-THPDFUA2RepairOptions.Default ודרסו רק את החלטות המדיניות שזרימת הקלט מחייבת

שדהמטרה
NormalizeDuplicateNamespacesבונה מחדש את StructTreeRoot/Namespaces עם מילון עקיף קנוני אחד לכל URI ודוחה role maps סותרים
RegisterReferencedNamespacesרושם מילוני namespace תקפים שאליהם מפנים אלמנטי מבנה, תכונות או role maps מודעי-namespace
RepairStandardStructureNamespacesמקצה את namespace של PDF 2.0 לתפקידים סטנדרטיים כשה-namespace חסר או פגום, ותמיד מנרמל את Document ברמה העליונה
RepairAttributeNamespacesמבצע קנוניזציה של הפניות namespace של תכונות ומסיר רשומות namespace פגומות מבעלים סטנדרטיים
RepairAttributeRevisionsמנרמל מספרי revision שליליים או שבריים ומסיר רשומות revision יתומות ממערכי תכונות
RepairListSemanticsמנרמל מספור, דגלי המשך, סוגי המשך פגומים ו-caption אחד שאינו במקומו, בלי להמציא תוכן רשימה
RepairTableSemanticsמנרמל spans ו-scopes פגומים, מסיר הפניות header פגומות בטווח הטבלה, ומזיז caption אחד שאינו במקומו
RepairRubyWarichuSequencesמסדר מחדש צאצאים רק כאשר ה-multiset המדויק של התפקידים הנדרשים כבר קיים
RepairPronunciationHintsמסיר hints בטיפוס שגוי, מצלם הפניות lexicon פגומות, ומנרמל תתי-MIME של PLS מוטמעים
RepairMissingAlternateTextמשחזר Alt חסר עבור Figure, Formula ו-Form מתוך כותרת קיימת, טקסט הרחבה, טקסט מחולצה מאותו MCID, או fallback מפורש — בסדר זה
RepairLanguageInheritanceמקדם שפת ברירת מחדל תקפה של שורש המבנה או כזו מפורשת אל ה-Catalog, ומסיר רשומות שפה פגומות או מיותרות ברמת המבנה כאשר הירושה חד-משמעית
RepairHeadingOrderממספר מחדש רק פגמי כותרת-ראשונה ודילוגי-רמה תוך שימור סדר המסמך
RepairArtifactTaggingכותב מחדש תגי marked-content המשויכים לאלמנט מבנה Artifact עבור תוכן של producer ושל עמודים טעונים
AllowDocumentFragmentHeadingStartsמאפס הקשר כותרות בתוך כל DocumentFragment, הן עבור התיקון והן עבור validation שאחריו
RollbackOnValidationFailureמשחזר את ה-graph המקורי כאשר כל שגיאת PDF/UA-2 שהיא נותרת אחרי התיקון
CustomAttributeNamespaceURIמספק את ה-namespace המפורש לבעלי תכונות מותאמים שאת הסמנטיקה שלהם לא ניתן להסיק בבטחה; ברירת המחדל היא ערך ריק שנכשל בסגירה
DefaultLanguageמספק תג שפה BCP-47 רק כאשר לא ה-Catalog ולא שורש המבנה מכילים שפה תקפה
FallbackAlternateTextמספק טקסט חלופי שנבדק על ידי הקורא לאחר שכל מקורות המסמך נכשלו; ברירת המחדל היא ערך ריק שלעולם לא ממציא תיאור
MaxGeneratedAlternateTextCharactersמגביל חילוץ טקסט מאותו MCID; ברירת המחדל היא 4,096 יחידות קוד UTF-16
MaxObjectsמגביל סריקת object graph; ברירת המחדל היא 1,000,000 אובייקטים
MaxRepairsמגביל מוטציות שנשמרות; ברירת המחדל היא 100,000 פעולות תיקון

דוח התיקון

THPDFUA2RepairReport מדווח אם ה-graph השתנה או בוצע בו rollback, אם חרגה מגבלה, את מצב ה-validation שאחרי התיקון, את מספר האובייקטים שנבדקו, את השגיאות שנותרו, ומונים לכל משפחת תיקון, לרבות טקסט חלופי, רשומות שפה, רמות כותרות ותגי Artifact

UnresolvedAlternateTextCount, UnresolvedLanguageCount ו-UnresolvedArtifactCount מבדילים סמנטיקה שעדיין דורשת עיון המחבר ממוטציות אוטומטיות

המערך THPDFUA2ValidationIssues שמוחזר מכיל את האבחונים שאחרי התיקון כאשר ה-validation נכשל, ואבחונים יציבים ייעודיים-לתיקון כאשר מגבלת משאב או role map משוכפל וסותר מבטלת את הטרנזקציה

ה-overload המפורט מחזיר גם ממצאים שלפני התיקון עם הערות crsApplied, crsUnresolved, crsRolledBack או crsFailed, ובנוסף סיכומים ממונים לכל משפחת תיקון

overload זה של provenance מבצע מעבר validation נוסף ומוגבל לפני התיקון; השתמשו ב-overload הקיים עם שלושת הפלטים כאשר נדרשים רק הדוח הסופי והבעיות

אטומיות ובטיחות

דוגמה

var
  Options: THPDFUA2RepairOptions;
  Report: THPDFUA2RepairReport;
  Issues: THPDFUA2ValidationIssues;
begin
  Options := THPDFUA2RepairOptions.Default;
  Options.DefaultLanguage := 'en-US';
  Options.CustomAttributeNamespaceURI :=
    'https://example.com/ns/accessibility-attributes';
  if not PDF.RepairPDFUA2Structure(Options, Report, Issues) then
    raise Exception.CreateFmt('%s at %s',
      [String(Issues[0].Code), String(Issues[0].Path)]);
end;

ממשקי API קשורים