THotPDF.AddLoadedSignedSignatureField Method
Lägger till ett signaturfält som är redo att signeras i ett inläst dokument. Fältet bär en signaturordbok med reserverat utrymme för /ByteRange och /Contents, så att SignPDFWithPFX, PreparePDFForSigning och InsertSignatureHex kan signera det när dokumentet har sparats. Tillsammans med BeginIncrementalUpdate är detta hur en redan signerad PDF får en andra 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;
Enhet
HPDFDoc
Parametrar
| Namn | Syfte |
|---|---|
PageIndex | Nollbaserat index för den inlästa sida som visar signaturwidgeten |
X1, Y1, X2, Y2 | Widgetrektangel i PDF-användarrymd (punkter, origo i nedre vänstra hörnet); bredden och höjden måste vara positiva |
AFieldName | Namn på det nya signaturfältet; det får inte vara tomt och får inte redan finnas i dokumentet |
ContentsBytes | Byte som reserveras för CMS-signaturen (skrivs som dubbelt så många hexadecimala siffror); det måste rymma hela signaturen, inklusive certifikat och eventuell tidsstämpeltoken |
SubFilter | Signaturformat, till exempel adbe.pkcs7.detached eller ETSI.CAdES.detached |
Reason, Location, ContactName | Valfria /Reason-, /Location- och /ContactInfo-poster i signaturordboken |
Returvärde
Returnerar index för det nya formulärfältet, eller -1 när PageIndex är utanför giltigt intervall
Användningsanteckningar
- Ingen sida är aktuell efter
BeginIncrementalUpdateellerLoadFromFile, så använd denna metod i stället förTHPDFPage.AddSignedSignatureField, som är avsedd för dokument som skapats medBeginDoc - I inkrementellt läge läggs fältet, dess signaturordbok, den uppdaterade AcroFormen och sidans
/Annotstill som en ny revision. Byte som täcks av tidigare signaturer ändras inte, så de signaturerna förblir giltiga, och den nya signaturen täcker hela filen - AcroForm får
/SigFlags 3(signaturer finns, endast tillägg). Till skillnad från de andraAddLoaded*-fältmetoderna läggs/NeedAppearancesinte till, vilket skulle be visningsprogram att skriva om ett signerat dokument - Signera den sparade filen med
SignPDFWithPFX. För en extern signerare eller HSM: läs in filen i enAnsiString, anropaPreparePDFForSigningför att få de två byteintervall som ska hashas, bygg CMS över dem och skriv dess hexadecimala form medInsertSignatureHex - Använd AddLoadedSignatureField för ett tomt fält som ett visningsprogram eller ett annat verktyg signerar senare
Exempel
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');