THotPDF.AddLoadedSignedSignatureField Method
Voegt een handtekeningveld dat klaar is om te ondertekenen toe aan een geladen document. Het veld bevat een handtekeningwoordenboek met gereserveerde ruimte voor /ByteRange en /Contents, zodat SignPDFWithPFX, PreparePDFForSigning en InsertSignatureHex het kunnen ondertekenen zodra het document is opgeslagen. Samen met BeginIncrementalUpdate is dit de manier waarop een reeds ondertekende PDF een tweede handtekening krijgt
Declaratie
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;
Eenheid
HPDFDoc
Parameters
| Naam | Doel |
|---|---|
PageIndex | Nulgebasererde index van de geladen pagina die de handtekening-widget toont |
X1, Y1, X2, Y2 | Widgetrechthoek in PDF-gebruikersruimte (punten, oorsprong linksonder); breedte en hoogte moeten positief zijn |
AFieldName | Naam van het nieuwe handtekeningveld; deze mag niet leeg zijn en mag nog niet in het document bestaan |
ContentsBytes | Bytes gereserveerd voor de CMS-handtekening (geschreven als twee keer zoveel hexadecimale cijfers); het moet de volledige handtekening kunnen bevatten, inclusief certificaten en eventueel een timestamp-token |
SubFilter | Handtekeningformaat, bijvoorbeeld adbe.pkcs7.detached of ETSI.CAdES.detached |
Reason, Location, ContactName | Optionele /Reason-, /Location- en /ContactInfo-items van het handtekeningwoordenboek |
Retourwaarde
Retourneert de index van het nieuwe formulierveld, of -1 wanneer PageIndex buiten het bereik ligt
Gebruiksopmerkingen
- Na
BeginIncrementalUpdateofLoadFromFileis geen pagina actueel, dus gebruik deze methode in plaats vanTHPDFPage.AddSignedSignatureField, die bedoeld is voor documenten die metBeginDoczijn gemaakt - In incrementele modus worden het veld, zijn handtekeningwoordenboek, de bijgewerkte AcroForm en de pagina-
/Annotsals nieuwe revisie toegevoegd. De bytes die onder eerdere handtekeningen vallen, worden niet gewijzigd, dus die handtekeningen blijven geldig, en de nieuwe handtekening dekt het hele bestand - De AcroForm krijgt
/SigFlags 3(handtekeningen aanwezig, alleen toevoegen). In tegenstelling tot de andereAddLoaded*-veldmethoden voegt het geen/NeedAppearancestoe, wat viewers zou vragen een ondertekend document te herschrijven - Onderteken het opgeslagen bestand met
SignPDFWithPFX. Voor een externe ondertekenaar of HSM: lees het bestand in eenAnsiString, roepPreparePDFForSigningaan om de twee te hashen bytebereiken op te halen, bouw er de CMS overheen en schrijf zijn hexadecimale vorm metInsertSignatureHex - Gebruik AddLoadedSignatureField voor een leeg veld dat een viewer of een andere tool later ondertekent
Voorbeeld
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');