THPDFSignatureRevisionAnalysis Record
Policy-aware classification of each 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 at the moment the signature was applied |
TotalRevisionCount | How many incremental revisions are present in the file |
SignedRevisionIndex | Zero-based index of the revision that the signature covers |
ModificationLevel | Highest semantic severity reached after the signature, running from rmlNone to rmlOther |
ChangeKinds | Set of concrete change kinds seen across the later revisions |
ChangedObjectCount | Objects that later revisions redefined |
FreedObjectCount | Objects that later revisions freed |
ChangedFieldNames | Form fields whose values later revisions have touched |
Permissions | Structural DocMDP / FieldMDP / UR policy inspection carried out on the signed document |
DocMDPCompliant | True where the observed changes fit the signed DocMDP permission level |
FieldMDPCompliant | True where field changes respect the signed FieldMDP policy |
URCompliant | True where no usage rights restrictions were broken |
IdentityCompliant | True where Identity-transform expectations, such as timestamps, hold |
TransformCompliant | True where no unrecognised transform method turns up in later revisions |
PolicyCompliant | Aggregate verdict across every compliance check |
Revisions | A THPDFSignatureRevisionChange entry for each later revision, with its own object lists and issue text |
Issue | Why the analysis failed; empty when it succeeded |
Usage notes
- Fill it with
AnalyzeLoadedSignatureRevisions; you need the stream overload when the document has no source file on disk - The modification level ordering is deliberate: a larger ordinal is never less restrictive, so weigh ordinals against the signed policy
- Cryptographic validity remains
VerifyLoadedSignature's responsibility; this record classifies what changed, not whether the bytes verify