TPDFlibSignDoc
Security and Signatures
Beskrivning
TPDFlibSignDoc ger direkt åtkomst till ett dokuments signaturfält utan att läsa in hela PDF:en i minnet
Klassen öppnar en fil, en anroparägd stream eller en ANSI-bytesträng, räknar upp AcroForm-signaturfälten och läser råvärdena från en befintlig signatur så att en verifierare kan räkna om /ByteRange-digesten
Den sköter också skrivsidan av inkrementella uppdateringar: Append startar en ny revision, AddSignatureField registrerar ett nytt fält, och SetSignatureValue-familjen skriver i det reserverade utrymmet medan tidigare revisioner lämnas orörda
SigningWorkbench-demon driver den här klassen hela vägen, från fältuppräkning till ByteRange-inspektion och certifikatutdragning
Syntax
Delphi
TPDFlibSignDoc = Class
Public
Destructor Destroy; Override;
Function Open(Const FileName: WideString; Const Password: WideString; ReadWrite: Boolean): Boolean;
Function OpenStream(SourceStream: TStream; Const Password: WideString): Boolean;
Function OpenString(Const SourceData: AnsiString; Const Password: WideString): Boolean;
Procedure Append;
Function AppendToFile(Const FileName: WideString): Boolean;
Function AppendToStream(TargetStream: TStream): Boolean;
Procedure Close;
Function AddSignatureField(Const FieldName: WideString; PageNumber: Integer): Integer;
Function HasSignatureField(Const FieldName: WideString): Boolean;
Procedure GetSignatureFieldNames(Names: TStrings);
Function GetSignatureValueObjNum(Const FieldName: WideString): Integer;
Function GetSignatureValueByName(Const FieldName: WideString; ValueKey: Integer): AnsiString;
Function GetSignatureTextValueByName(Const FieldName: WideString; ValueKey: Integer): WideString;
Function GetSignatureDocMDPLevelByName(Const FieldName: WideString): Integer;
Function GetSignaturePermissionInfoByName(Const FieldName: WideString;
Out Report: TPDFlibSignaturePermissionReport): Boolean;
Function GetSignatureSeedValueEx(Const FieldName: WideString;
Out SeedValue: TPDFSignatureSeedValue): Boolean;
Function GetSignatureContentsHashHexByName(Const FieldName: WideString): AnsiString;
Function SetSignatureValue(Const FieldName: WideString; Const NewValue: AnsiString;
DocMDPLevel: Integer): Boolean;
Function SetSignatureFieldLock(Const FieldName: WideString;
Const Action: AnsiString; Const Fields: TArray): Boolean;
Procedure SetSignatureImage(Const FieldName: WideString; Const ImageData: AnsiString; ImageOptions: Integer);
Procedure SetSignatureAppearanceText(Const FieldName, Text: WideString; FontSize, FontRed, FontGreen, FontBlue: Double);
Procedure SetSignatureBounds(Const FieldName: WideString; Left, Top, Width, Height: Double);
Function GetDocumentBytes: TBytes;
Function GetDocumentSize: Int64;
Function ReadDocumentRange(Offset: Int64; Buffer: Pointer; Count: Integer): Integer;
Function GetDSSValidationMaterial(Const FieldName: WideString;
Out Certs, CRLs, OCSPs: TStructStrArray; Out UsedVRI: Boolean): Boolean;
Procedure SetSignatureFlags(NewFlags: Integer);
Procedure EnsurePAdESExtensions(ESICLevel: Integer);
Property IsOpen: Boolean Read FIsOpen;
Property SignatureFieldPosition: Int64 Read FSignatureFieldPosition;
Property SignatureFieldLength: Integer Read FSignatureFieldLength;
End; Metoder
| Open, OpenStream, OpenString | Öppnar en fil, en stream eller en ANSI-sträng i minnet, eventuellt för läs-skrivåtkomst; Open tar emot ett lösenord och en läs-skrivflagga |
|---|---|
| Append, AppendToFile, AppendToStream | Startar en ny inkrementell revision på plats, eller lägger revisionen till en ny fil eller stream |
| Close | Frigör den underliggande smart readern och dokumenthandtagen |
| AddSignatureField | Registrerar ett nytt signaturfält på den angivna sidan och returnerar dess objektnummer, eller 0 vid fel |
| HasSignatureField | True när ett signaturfält med det fullt kvalificerade namnet finns |
| GetSignatureFieldNames | Fyller en TStrings med alla signaturfältnamn i AcroForm |
| GetSignatureValueObjNum | Objektnummer för signaturvärdesordboken, eller 0 när fältet är osignerat |
| GetSignatureValueByName | Råa binära värden valda via ValueKey: 0 = /Contents, 1 = /Cert, 2 = /Filter, 3 = /SubFilter, 11 till 14 = /ByteRange-poster 0 till 3 som decimalsträngar |
| GetSignatureTextValueByName | Textvärden valda via ValueKey: 0 = /M, 1 = /Name, 2 = /Reason, 3 = /Location, 4 = /ContactInfo, 5 = /Type |
| GetSignatureDocMDPLevelByName | DocMDP-transformationsnivån (P-värde) för en certifierande signatur, 0 när den saknas |
| GetSignaturePermissionInfoByName | Tolkar en signaturs DocMDP- och FieldMDP-begränsningar till en rapportpost |
| GetSignatureSeedValueEx | Läser /SV-seed value-ordboken som begränsar vad en signerare får skriva i fältet |
| GetSignatureContentsHashHexByName | Hex-digest av det signerade innehåll som ByteRange täcker |
| SetSignatureValue | Skriver en färdig signatur i det reserverade /Contents-utrymmet och noterar DocMDP-nivån |
| SetSignatureFieldLock | Skriver en fältlåsningsordbok med en åtgärd och en fältnamnlista |
| SetSignatureImage, SetSignatureAppearanceText, SetSignatureBounds | Styr det synliga utseendet: en ritad bild, en i v3.221.0 byggd enbart-text appearance stream och explicita fältgränser |
| GetDocumentBytes, GetDocumentSize, ReadDocumentRange | Rå åtkomst till de underliggande bytes så att hela filen eller ett ByteRange-segment kan hashas externt |
| GetDSSValidationMaterial | Returnerar DSS-certifikat, CRL:er och OCSP-svar för ett fält och rapporterar om VRI-bevis användes |
| SetSignatureFlags, EnsurePAdESExtensions | Justerar /SigFlags och lägger till ETSI PAdES-tilläggsschemat |
Parametrar
| IsOpen | True mellan en lyckad open och Close |
|---|---|
| SignatureFieldPosition | Filoffset för det valda signaturfältets innehåll |
| SignatureFieldLength | Bytelängd reserverad för den valda signaturens innehåll |
Anmärkningar
Hela filen materialiseras av GetDocumentBytes, eftersom de två ByteRange-segmenten tillsammans täcker i princip hela filen
Vill du signera utan att röra det här lågnivågränssnittet exponerar fasaden samma pipeline via de dokumenterade SignProcess-funktionerna
Se även
TPDFlibSignatureVerifier, TPDFlibPFXFile, TPDFlibSigner, NewSignProcessFromFile, GetSignProcessByteRange