THotPDF.AddLoadedSignedSignatureField Method
Tilføjer et signaturfelt, der er klar til at signere, til et indlæst dokument. Feltet bærer en signaturordbog med reserveret plads til /ByteRange og /Contents, så SignPDFWithPFX, PreparePDFForSigning og InsertSignatureHex kan signere det, når dokumentet er gemt. Sammen med BeginIncrementalUpdate er det sådan, et allerede signeret PDF-dokument får en anden signatur
Deklaration
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;
Enhed
HPDFDoc
Parametre
| Navn | Formål |
|---|---|
PageIndex | Nul-baseret indeks for den indlæste side, der viser signatur-widget'en |
X1, Y1, X2, Y2 | Widget-rektangel i PDF-brugerrum (punkter, origo nederst til venstre); bredde og højde skal være positive |
AFieldName | Navn på det nye signaturfelt; det må ikke være tomt, og det må ikke allerede findes i dokumentet |
ContentsBytes | Bytes reserveret til CMS-signaturen (skrives som dobbelt så mange hex-cifre); pladsen skal rumme den komplette signatur, herunder certifikater og eventuel tidsstempel-token |
SubFilter | Signaturformat, for eksempel adbe.pkcs7.detached eller ETSI.CAdES.detached |
Reason, Location, ContactName | Valgfrie /Reason-, /Location- og /ContactInfo-poster i signaturordbogen |
Returværdi
Returnerer indeks for det nye formularfelt eller -1, når PageIndex er uden for intervallet
Brugsnoter
- Ingen side er aktuel efter
BeginIncrementalUpdateellerLoadFromFile, så brug denne metode i stedet forTHPDFPage.AddSignedSignatureField, som er beregnet til dokumenter oprettet medBeginDoc - I inkrementel tilstand føjes feltet, dets signaturordbog, den opdaterede AcroForm og sidens
/Annotstil som en ny revision. Bytes, som tidligere signaturer dækker, ændres ikke, så de signaturer forbliver gyldige, og den nye signatur dækker hele filen - AcroForm får
/SigFlags 3(der findes signaturer, kun tilføjelse). I modsætning til de andreAddLoaded*-feltmetoder tilføjes/NeedAppearancesikke, da det ville bede fremvisere om at omskrive et signeret dokument - Signer den gemte fil med
SignPDFWithPFX. Ved en ekstern underskriver eller HSM læses filen ind i enAnsiString, kaldPreparePDFForSigningfor at få de to byte-intervaller, der skal hashes, byg CMS over dem og skriv hex-værdien medInsertSignatureHex - Brug AddLoadedSignatureField til et tomt felt, som en fremviser eller et andet værktøj signerer senere
Eksempel
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');