THotPDF.RepairPDFUA2Structure Method
Répare les défauts récupérables d’espace de noms, d’attributs, de structure et d’accessibilité PDF/UA-2 dans une transaction de graphe copy-on-write et valide le graphe candidat avant le commit
Déclaration
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;
Unité
HPDFDoc
Options de réparation
Partez de THPDFUA2RepairOptions.Default et ne dérogez qu’aux décisions de politique exigées par le workflow d’entrée
| Champ | Rôle |
|---|---|
NormalizeDuplicateNamespaces | Reconstruit StructTreeRoot/Namespaces avec un dictionnaire indirect canonique par URI et rejette les role maps en conflit |
RegisterReferencedNamespaces | Enregistre les dictionnaires d’espaces de noms valides référencés par les éléments de structure, les attributs ou les role maps sensibles aux espaces de noms |
RepairStandardStructureNamespaces | Affecte l’espace de noms PDF 2.0 aux rôles standards lorsque l’espace de noms est manquant ou invalide et normalise toujours le Document de premier niveau |
RepairAttributeNamespaces | Canonise les références d’espaces de noms d’attributs et supprime les entrées d’espaces de noms invalides des propriétaires standards |
RepairAttributeRevisions | Normalise les numéros de révision négatifs ou fractionnaires et supprime les entrées de révision orphelines des tableaux d’attributs |
RepairListSemantics | Normalise la numérotation, les indicateurs de continuation, les types de continuation invalides et une légende unique mal placée sans inventer de contenu de liste |
RepairTableSemantics | Normalise les spans et scopes invalides, supprime les références d’en-têtes locales à la table invalides et déplace une légende unique mal placée |
RepairRubyWarichuSequences | Réordonne les enfants uniquement lorsque le multiset exact de rôles requis est déjà présent |
RepairPronunciationHints | Supprime les indications mal typées, élague les références de lexique invalides et normalise les sous-types MIME PLS embarqués |
RepairMissingAlternateText | Restaure les Alt manquants pour Figure, Formula et Form à partir d’un titre existant, d’un texte d’expansion, du texte extrait de même MCID ou d’un repli explicite, dans cet ordre |
RepairLanguageInheritance | Promeut vers le Catalog une langue valide de racine de structure ou explicite par défaut, et supprime les entrées de langue invalides ou redondantes au niveau de la structure lorsque l’héritage est non ambigu |
RepairHeadingOrder | Renumérote uniquement les défauts de premier titre et de niveaux sautés tout en conservant l’ordre du document |
RepairArtifactTagging | Réécrit les balises de marked-content associées à un élément de structure Artifact pour le contenu des pages producteur et chargées |
AllowDocumentFragmentHeadingStarts | Réinitialise le contexte de titres dans chaque DocumentFragment pour la réparation et la validation post-réparation |
RollbackOnValidationFailure | Restaure le graphe d’origine lorsqu’une erreur PDF/UA-2 subsiste après la réparation |
CustomAttributeNamespaceURI | Fournit l’espace de noms explicite pour les propriétaires d’attributs personnalisés dont la sémantique ne peut pas être déduite sans risque, avec un défaut vide qui échoue fermé |
DefaultLanguage | Fournit une balise de langue BCP-47 uniquement lorsque ni le Catalog ni la racine de structure ne contiennent de langue valide |
FallbackAlternateText | Fournit un texte alternatif relu par l’appelant après l’échec de toutes les sources dérivées du document, avec un défaut vide qui ne fabrique jamais de description |
MaxGeneratedAlternateTextCharacters | Borne l’extraction de texte de même MCID et vaut 4 096 unités de code UTF-16 par défaut |
MaxObjects | Borne le scan du graphe d’objets et vaut 1 000 000 d’objets par défaut |
MaxRepairs | Borne les mutations retenues et vaut 100 000 opérations de réparation par défaut |
Rapport de réparation
THPDFUA2RepairReport rapporte si le graphe a changé ou a été annulé, si une borne a été dépassée, l’état de validation post-réparation, les objets examinés, les erreurs restantes et des compteurs par famille de réparations, y compris texte alternatif, entrées de langue, niveaux de titres et balises Artifact
UnresolvedAlternateTextCount, UnresolvedLanguageCount et UnresolvedArtifactCount distinguent la sémantique exigeant encore une relecture de l’auteur des mutations automatiques
Le tableau THPDFUA2ValidationIssues renvoyé contient les diagnostics post-réparation lorsque la validation échoue et des diagnostics stables propres à la réparation lorsqu’une borne de ressource ou un doublon de role map en conflit annule la transaction
La surcharge détaillée renvoie aussi les constats pré-réparation annotés crsApplied, crsUnresolved, crsRolledBack ou crsFailed, plus des résumés comptés pour chaque famille de réparations
Cette surcharge de provenance effectue une passe de validation bornée supplémentaire avant réparation ; utilisez la surcharge existante à trois sorties lorsque seuls le rapport final et les problèmes sont nécessaires
Atomicité et sécurité
- Chaque mutation participe à la transaction de graphe du document, y compris les dictionnaires d’espaces de noms indirects nouvellement alloués
- Les dictionnaires d’espaces de noms en double ne sont fusionnés que lorsque leurs mappings de rôles concordent
- La sémantique des attributs personnalisés n’est jamais inventée sauf si
CustomAttributeNamespaceURIest fourni explicitement - Le texte alternatif n’est jamais fabriqué sauf si
FallbackAlternateTextest fourni explicitement - Les éditions de contenu de pages producteur sont mises en attente jusqu’à la réussite de la validation, tandis que les éditions de streams chargés restent dans la transaction de graphe
- Les intersections de tables ambiguës, les enfants structurels manquants, les ID en conflit, les cibles de continuation non résolues et la sémantique d’en-têtes absente ne sont jamais devinées
- La politique par défaut annule la réparation complète lorsque des erreurs PDF/UA-2 sans rapport subsistent
- Les graphes chargés et côté producteur suivent le même chemin borné de validation et de réparation
Exemple
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;