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, OpenStringBir 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, AppendToStreamYerinde yeni bir artımlı revizyon başlatır ya da revizyonu yeni bir dosyaya ya da akışa ekler
CloseAltta yatan akıllı okuyucuyu ve belge tanıtıcılarını serbest bırakır
AddSignatureFieldVerilen sayfaya yeni bir imza alanı kaydeder ve nesne numarasını döndürür; başarısızlıkta 0
HasSignatureFieldTam nitelikli adla bir imza alanı varsa True
GetSignatureFieldNamesAcroForm'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
GetSignatureValueByNameValueKey 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
GetSignatureTextValueByNameValueKey tarafından seçilen metin değerleri: 0 = /M, 1 = /Name, 2 = /Reason, 3 = /Location, 4 = /ContactInfo, 5 = /Type
GetSignatureDocMDPLevelByNameOnaylayan bir imzanın DocMDP dönüşüm düzeyi (P değeri); yoksa 0
GetSignaturePermissionInfoByNameBir 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
GetSignatureContentsHashHexByNameByteRange'in kapsadığı imzalı içeriklerin onaltılı özeti
SetSignatureValueTamamlanmış imzayı rezerve /Contents alanına yazar ve DocMDP düzeyini kaydeder
SetSignatureFieldLockBir eylem ve alan adı listesiyle alan kilidi sözlüğü yazar
SetSignatureImage, SetSignatureAppearanceText, SetSignatureBoundsGö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, ReadDocumentRangeTüm dosyanın ya da bir ByteRange segmentinin dışarıda hash'lenebilmesi için altta yatan baytlara ham erişim
GetDSSValidationMaterialBir 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

IsOpenBaşarılı bir açma ile Close arasında True
SignatureFieldPositionSeçilen imza alanı içeriğinin dosya ofseti
SignatureFieldLengthSeç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