THotPDF.RepairPDFUA2Structure Method
Ripara difetti recuperabili di namespace, attributi, struttura e accessibilità PDF/UA-2 all'interno di una transazione graph copy-on-write e valida il graph candidato prima del commit
Dichiarazione
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
Opzioni di riparazione
Partire da THPDFUA2RepairOptions.Default e sovrascrivere solo le decisioni di policy richieste dal workflow di input
| Campo | Scopo |
|---|---|
NormalizeDuplicateNamespaces | Ricostruisce StructTreeRoot/Namespaces con un dizionario indiretto canonico per URI e rifiuta role map in conflitto |
RegisterReferencedNamespaces | Registra i dizionari di namespace validi referenziati da elementi di struttura, attributi o role map sensibili al namespace |
RepairStandardStructureNamespaces | Assegna il namespace PDF 2.0 ai ruoli standard quando il namespace manca o non è valido e normalizza sempre il Document di primo livello |
RepairAttributeNamespaces | Canonizza i riferimenti namespace degli attributi e rimuove le voci di namespace non valide dai proprietari standard |
RepairAttributeRevisions | Normalizza i numeri di revisione negativi o frazionari e rimuove le voci di revisione orfane dagli array di attributi |
RepairListSemantics | Normalizza numerazione, flag di continuazione, tipi di continuazione non validi e una singola didascalia fuori posto senza inventare contenuto della lista |
RepairTableSemantics | Normalizza span e scope non validi, rimuove i riferimenti a header locali della tabella non validi e sposta una singola didascalia fuori posto |
RepairRubyWarichuSequences | Riordina i figli solo quando l'esatto multiset di ruoli richiesto è già presente |
RepairPronunciationHints | Rimuove gli hint con tipo errato, pota i riferimenti a lexicon non validi e normalizza i sottotipi MIME PLS incorporati |
RepairMissingAlternateText | Ripristina l'Alt mancante per Figure, Formula e Form a partire da un titolo esistente, testo di espansione, testo estratto con stesso MCID o un fallback esplicito, in quest'ordine |
RepairLanguageInheritance | Promuove al Catalog una lingua predefinita valida della radice di struttura o esplicita, e rimuove le voci di lingua a livello di struttura non valide o ridondanti quando l'ereditarietà non è ambigua |
RepairHeadingOrder | Rinumera solo i difetti di primo heading e di livello saltato, mantenendo l'ordine del documento |
RepairArtifactTagging | Riscrive i tag marked-content associati a un elemento di struttura Artifact per il contenuto producer e delle pagine caricate |
AllowDocumentFragmentHeadingStarts | Reimposta il contesto di heading dentro ogni DocumentFragment, sia per la riparazione sia per la validazione post-riparazione |
RollbackOnValidationFailure | Ripristina il graph originale quando dopo la riparazione resta un errore PDF/UA-2 |
CustomAttributeNamespaceURI | Fornisce il namespace esplicito per i proprietari di attributi custom le cui semantiche non possono essere inferite in modo sicuro, con un valore predefinito vuoto che fallisce in modo conservativo |
DefaultLanguage | Fornisce un tag di lingua BCP-47 solo quando né il Catalog né la radice di struttura contengono una lingua valida |
FallbackAlternateText | Fornisce testo alternativo revisionato dal chiamante dopo il fallimento di tutte le fonti derivate dal documento, con un valore predefinito vuoto che non fabbrica mai una descrizione |
MaxGeneratedAlternateTextCharacters | Limita l'estrazione di testo con stesso MCID e ha come predefinito 4.096 code unit UTF-16 |
MaxObjects | Limita la scansione dell'object graph e ha come predefinito 1.000.000 di oggetti |
MaxRepairs | Limita le mutazioni trattenute e ha come predefinito 100.000 operazioni di riparazione |
Report di riparazione
THPDFUA2RepairReport riporta se il graph è stato modificato o ha subìto un rollback, se un limite è stato superato, lo stato di validazione post-riparazione, gli oggetti esaminati, gli errori residui e i conteggi per ogni famiglia di riparazione, inclusi testo alternativo, voci di lingua, livelli di heading e tag Artifact
UnresolvedAlternateTextCount, UnresolvedLanguageCount e UnresolvedArtifactCount distinguono le semantiche che richiedono ancora una revisione dell'autore dalle mutazioni automatiche
L'array THPDFUA2ValidationIssues restituito contiene le diagnostiche post-riparazione quando la validazione fallisce e diagnostiche stabili specifiche della riparazione quando un limite di risorse o un role map duplicato in conflitto abortisce la transazione
L'overload dettagliato restituisce inoltre i finding pre-riparazione annotati come crsApplied, crsUnresolved, crsRolledBack o crsFailed, oltre a riepiloghi con conteggi per ogni famiglia di riparazione
Questo overload di provenance esegue un ulteriore passaggio di validazione pre-riparazione con limiti; usare l'esistente overload a tre output quando servono solo il report finale e le issue
Atomicità e sicurezza
- Ogni mutazione partecipa alla transazione del graph del documento, inclusi i dizionari di namespace indiretti appena allocati
- I dizionari di namespace duplicati vengono uniti solo quando i loro role mapping concordano
- Le semantiche degli attributi custom non vengono mai inventate a meno che
CustomAttributeNamespaceURIsia fornito esplicitamente - Il testo alternativo non viene mai fabbricato a meno che
FallbackAlternateTextsia fornito esplicitamente - Le modifiche al contenuto di pagina producer vengono messe in stage finché la validazione non riesce, mentre le modifiche agli stream caricati restano dentro la transazione del graph
- Intersezioni di tabella ambigue, figli strutturali mancanti, ID in conflitto, target di continuazione irrisolti e semantiche di header assenti non vengono mai indovinate
- La policy predefinita esegue il rollback dell'intera riparazione quando restano errori PDF/UA-2 non correlati
- I graph lato loaded e producer usano lo stesso percorso limitato di validazione e riparazione
Esempio
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;