THotPDF.AddLoadedSignedSignatureField Metodu
Yüklenmiş bir belgeye imzalamaya hazır bir imza alanı ekler. Alan, ayrılmış /ByteRange ve /Contents alanına sahip bir imza sözlüğü taşır; böylece belge kaydedildikten sonra SignPDFWithPFX, PreparePDFForSigning ve InsertSignatureHex onu imzalayabilir. BeginIncrementalUpdate ile birlikte bu, zaten imzalanmış bir PDF'in ikinci imzayı aldığı yoldur
Bildirim
function AddLoadedSignedSignatureField(PageIndex: Integer; X1, Y1, X2, Y2: Single;
const AFieldName: AnsiString; ContentsBytes: Integer = 8192;
const SubFilter: AnsiString = 'adbe.pkcs7.detached';
const Reason: AnsiString = ''; const Location: AnsiString = '';
const ContactName: AnsiString = ''): Integer;
Birim
HPDFDoc
Parametreler
| Ad | Amaç |
|---|---|
PageIndex | İmza widget'ını gösteren yüklenmiş sayfanın sıfır tabanlı indeksi |
X1, Y1, X2, Y2 | PDF kullanıcı uzayında widget dikdörtgeni (point, orjin sol altta); genişlik ve yükseklik pozitif olmalıdır |
AFieldName | Yeni imza alanının adı; boş olmamalı ve belgede zaten mevcut olmamalıdır |
ContentsBytes | CMS imzası için ayrılan baytlar (iki katı sayıda hex hanesi olarak yazılır); sertifikalar ve varsa timestamp token dahil tüm imzayı barındırmalıdır |
SubFilter | İmza biçimi, örneğin adbe.pkcs7.detached veya ETSI.CAdES.detached |
Reason, Location, ContactName | İmza sözlüğünün isteğe bağlı /Reason, /Location ve /ContactInfo girdileri |
Dönüş değeri
Yeni form alanının indeksini döndürür; PageIndex aralık dışındayken -1 döndürür
Kullanım notları
BeginIncrementalUpdateveyaLoadFromFilesonrasında geçerli sayfa yoktur; bu nedenleBeginDocile oluşturulan belgeler için tasarlananTHPDFPage.AddSignedSignatureFieldyerine bu metodu kullanın- Artımlı modda alan, imza sözlüğü, güncellenen AcroForm ve sayfa
/Annotsgirdisi yeni bir revizyon olarak eklenir. Önceki imzaların kapsadığı baytlar değişmez; böylece o imzalar geçerli kalır ve yeni imza dosyanın tamamını kapsar - AcroForm
/SigFlags 3değerini alır (imzalar var, yalnızca ekleme). DiğerAddLoaded*alan metodlarının aksine, imzalı bir belgeyi görüntüleyicilere yeniden yazdıracak/NeedAppearanceseklemez - Kaydedilen dosyayı
SignPDFWithPFXile imzalayın. Harici bir imzalayıcı veya HSM için dosyayı birAnsiStringiçine okuyun, hash'lenecek iki bayt aralığını almak içinPreparePDFForSigningçağırın, CMS'i bunlar üzerinden oluşturun ve hex'iniInsertSignatureHexile yazın - Bir görüntüleyicinin veya başka bir aracın daha sonra imzalayacağı boş alan için AddLoadedSignatureField kullanın
Örnek
PDF := THotPDF.Create(nil);
try
PDF.BeginIncrementalUpdate('Signed.pdf');
PDF.AddLoadedSignedSignatureField(0, 300, 120, 500, 160, 'Approver', 8192,
'adbe.pkcs7.detached', 'Approved');
PDF.SaveIncrementalUpdate('Prepared.pdf');
finally
PDF.Free;
end;
// Signs the reserved field; the first signature stays valid
THotPDF.SignPDFWithPFX('Prepared.pdf', 'SignedTwice.pdf', 'Signer.pfx', 'password');