THPDFSignatureRevisionAnalysis Record
Policy-aware classification of every incremental revision that follows a PDF signature
Declaration
THPDFSignatureRevisionAnalysis= record
SignedRevisionLength: Int64;
TotalRevisionCount: Integer;
SignedRevisionIndex: Integer;
ModificationLevel: THPDFRevisionModificationLevel;
ChangeKinds: THPDFRevisionChangeKinds;
ChangedObjectCount: Integer;
FreedObjectCount: Integer;
ChangedFieldNames: THPDFAnsiStringArray;
Permissions: THPDFSignaturePermissionInfo;
DocMDPCompliant: boolean;
FieldMDPCompliant: boolean;
URCompliant: boolean;
IdentityCompliant: boolean;
TransformCompliant: boolean;
PolicyCompliant: boolean;
Revisions: THPDFSignatureRevisionChangeArray;
Issue: AnsiString;
end;
Unit
HPDFDoc
Fields
| Field | Purpose |
|---|---|
SignedRevisionLength | Byte length of the file as it stood when the signature was applied |
TotalRevisionCount | Number of incremental revisions present in the file |
SignedRevisionIndex | Zero-based index of the revision the signature covers |
ModificationLevel | Highest semantic severity reached after the signature, from rmlNone to rmlOther |
ChangeKinds | Set of concrete change kinds observed across later revisions |
ChangedObjectCount | Objects redefined by later revisions |
FreedObjectCount | Objects freed by later revisions |
ChangedFieldNames | Form fields whose values later revisions touched |
Permissions | Structural DocMDP / FieldMDP / UR policy inspection of the signed document |
DocMDPCompliant | True when the observed changes fit the signed DocMDP permission level |
FieldMDPCompliant | True when field changes respect the signed FieldMDP policy |
URCompliant | True when usage rights restrictions were not violated |
IdentityCompliant | True when Identity-transform expectations (such as timestamps) hold |
TransformCompliant | True when no unrecognized transform method appears in later revisions |
PolicyCompliant | Aggregate verdict across all compliance checks |
Revisions | One THPDFSignatureRevisionChange entry per later revision with its own object lists and issue text |
Issue | Why the analysis failed, empty on success |
Usage notes
- Fill it with
AnalyzeLoadedSignatureRevisions; the stream overload is required when the document has no source file on disk - The modification level ordering is deliberate: a larger ordinal is never less restrictive, so compare ordinals against the signed policy
- Cryptographic validity remains the responsibility of
VerifyLoadedSignature; this record classifies what changed, not whether bytes verify