TPDFlibSignDoc
Security and Signatures
Açıklama
TPDFlibSignDoc, belgenin tamamını belleğe yüklemeden imza alanlarına doğrudan erişim sağlar
Sınıf bir dosyayı, çağıranın sahibi olduğu bir akışı ya da ANSI bayt dizisini açar, AcroForm imza alanlarını numaralandırır ve mevcut bir imzanın ham değerlerini okur; böylece doğrulayıcı /ByteRange özetini yeniden hesaplayabilir
Ayrıca artımlı güncellemelerin yazma tarafını yürütür: Append yeni bir revizyon başlatır, AddSignatureField taze bir alan kaydeder, SetSignatureValue ailesi ise önceki revizyonları bozulmadan tutarken rezerve alana yazar
SigningWorkbench demosu bu sınıfı, alan numaralandırmadan ByteRange incelemesine ve sertifika çıkarımına kadar baştan sona kullanır
Sözdizimi
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; Yöntemler
| Open, OpenStream, OpenString | Bir dosyayı, akışı ya da bellek içi ANSI dizgisini açar; isteğe bağlı olarak okuma-yazma erişimiyle. Open bir parola ve okuma-yazma bayrağı kabul eder |
|---|---|
| Append, AppendToFile, AppendToStream | Yerinde yeni bir artımlı revizyon başlatır ya da revizyonu yeni bir dosyaya ya da akışa ekler |
| Close | Altta yatan akıllı okuyucuyu ve belge tanıtıcılarını serbest bırakır |
| AddSignatureField | Verilen sayfaya yeni bir imza alanı kaydeder ve nesne numarasını döndürür; başarısızlıkta 0 |
| HasSignatureField | Tam nitelikli adla bir imza alanı varsa True |
| GetSignatureFieldNames | AcroForm'daki tüm imza alanı adlarını bir TStrings'e doldurur |
| GetSignatureValueObjNum | İmza değeri sözlüğünün nesne numarası; alan imzasızsa 0 |
| GetSignatureValueByName | ValueKey tarafından seçilen ham ikili değerler: 0 = /Contents, 1 = /Cert, 2 = /Filter, 3 = /SubFilter, 11-14 = ondalık dizgi olarak /ByteRange 0-3 girdileri |
| GetSignatureTextValueByName | ValueKey tarafından seçilen metin değerleri: 0 = /M, 1 = /Name, 2 = /Reason, 3 = /Location, 4 = /ContactInfo, 5 = /Type |
| GetSignatureDocMDPLevelByName | Onaylayan bir imzanın DocMDP dönüşüm düzeyi (P değeri); yoksa 0 |
| GetSignaturePermissionInfoByName | Bir imzanın DocMDP ve FieldMDP kısıtlarını bir rapor kaydına ayrıştırır |
| GetSignatureSeedValueEx | İmzalayanın alana ne yazabileceğini kısıtlayan /SV seed value sözlüğünü okur |
| GetSignatureContentsHashHexByName | ByteRange'in kapsadığı imzalı içeriklerin onaltılı özeti |
| SetSignatureValue | Tamamlanmış imzayı rezerve /Contents alanına yazar ve DocMDP düzeyini kaydeder |
| SetSignatureFieldLock | Bir eylem ve alan adı listesiyle alan kilidi sözlüğü yazar |
| SetSignatureImage, SetSignatureAppearanceText, SetSignatureBounds | Görünür görünümü kontrol eder: çizilmiş bir görsel, v3.221.0'da oluşturulan salt metin görünüm akışı ve açık alan sınırları |
| GetDocumentBytes, GetDocumentSize, ReadDocumentRange | Tüm dosyanın ya da bir ByteRange segmentinin dışarıda hash'lenebilmesi için altta yatan baytlara ham erişim |
| GetDSSValidationMaterial | Bir alan için DSS sertifikalarını, CRL'leri ve OCSP yanıtlarını döndürür ve VRI kanıtı kullanılıp kullanılmadığını bildirir |
| SetSignatureFlags, EnsurePAdESExtensions | /SigFlags ayarını düzenler ve ETSI PAdES uzantı şemasını ekler |
Parametreler
| IsOpen | Başarılı bir açma ile Close arasında True |
|---|---|
| SignatureFieldPosition | Seçilen imza alanı içeriğinin dosya ofseti |
| SignatureFieldLength | Seçilen imza içeriği için rezerve edilmiş bayt uzunluğu |
Açıklamalar
İki ByteRange segmenti birlikte dosyanın özünde tamamını kapladığı için tüm dosya GetDocumentBytes ile somutlaştırılır
Bu düşük seviyeli yüzeye dokunmadan imzalamak için facade, belgelenmiş SignProcess fonksiyonları üzerinden eşdeğer hattı sunar
Ayrıca bkz
TPDFlibSignatureVerifier, TPDFlibPFXFile, TPDFlibSigner, NewSignProcessFromFile, GetSignProcessByteRange