|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (Delphi DLL) PDF Signature Appearance Text Substitution KeywordsSee more PDF Signatures ExamplesThis example demonstrates the text substitution keywords that can be used in the PDF signature's appearance text.Note: This example requires Chilkat v9.5.0.85 or greater. 
 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, Pdf, Cert, JsonObject; ... procedure TForm1.Button1Click(Sender: TObject); var pdf: HCkPdf; success: Boolean; json: HCkJsonObject; jpgData: HCkBinData; cert: HCkCert; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. pdf := CkPdf_Create(); // Load a PDF to be signed. success := CkPdf_LoadFile(pdf,'qa_data/pdf/empty.pdf'); if (success = False) then begin Memo1.Lines.Add(CkPdf__lastErrorText(pdf)); Exit; end; // Options for signing are specified in JSON. json := CkJsonObject_Create(); // In most cases, the signingCertificateV2 and signingTime attributes are required. CkJsonObject_UpdateInt(json,'signingCertificateV2',1); CkJsonObject_UpdateInt(json,'signingTime',1); // Put the signature on page 1, top left CkJsonObject_UpdateInt(json,'page',1); CkJsonObject_UpdateString(json,'appearance.y','top'); CkJsonObject_UpdateString(json,'appearance.x','left'); // Use a font scale of 7.0 CkJsonObject_UpdateString(json,'appearance.fontScale','7.0'); // The appearance of the PDF signature can contain any number of text lines. // Chilkat has defined a number of special keywords that can be used in any text line. // Each keyword is replaced with the actual value. // For example, "cert_cn" is replaced with the certificate subject's common name (CN). // Here we are creating a signature with many lines of text, to demonstrate each // keyword. CkJsonObject_UpdateString(json,'appearance.text[0]','Date/time in PDF format: current_dt'); CkJsonObject_UpdateString(json,'appearance.text[1]','Current Local date/time: current_datetime'); CkJsonObject_UpdateString(json,'appearance.text[2]','GMT Timestamp: current_timestamp_gmt'); CkJsonObject_UpdateString(json,'appearance.text[3]','Local Timestamp: current_timestamp_local'); CkJsonObject_UpdateString(json,'appearance.text[4]','GMT RFC822 date/time: current_rfc822_dt_gmt'); CkJsonObject_UpdateString(json,'appearance.text[5]','Local RFC822 date/time: current_rfc822_dt_local'); CkJsonObject_UpdateString(json,'appearance.text[6]','Cert DN (Distinguished Name): cert_dn'); CkJsonObject_UpdateString(json,'appearance.text[7]','Cert Common Name: cert_cn'); CkJsonObject_UpdateString(json,'appearance.text[8]','Cert Organizational ID (2.5.4.97): cert_org_id'); CkJsonObject_UpdateString(json,'appearance.text[9]','Cert Email: cert_email'); CkJsonObject_UpdateString(json,'appearance.text[10]','Cert Organization: cert_organization'); CkJsonObject_UpdateString(json,'appearance.text[11]','Cert Organziational Unit: cert_ou'); CkJsonObject_UpdateString(json,'appearance.text[12]','Cert State: cert_state'); CkJsonObject_UpdateString(json,'appearance.text[13]','Cert Country: cert_country'); CkJsonObject_UpdateString(json,'appearance.text[14]','Cert Locality: cert_locality'); CkJsonObject_UpdateString(json,'appearance.text[15]','Cert Serial Number (hex): cert_serial_hex'); CkJsonObject_UpdateString(json,'appearance.text[16]','Cert Serial Number (decimal): cert_serial_dec'); CkJsonObject_UpdateString(json,'appearance.text[17]','Cert Thumbprint: cert_thumbprint'); CkJsonObject_UpdateString(json,'appearance.text[18]','Cert Issuer Common Name: cert_issuer_cn'); jpgData := CkBinData_Create(); success := CkBinData_LoadFile(jpgData,'qa_data/jpg/seal1.jpg'); if (success = False) then begin Memo1.Lines.Add('Failed to load the JPG image.'); Exit; end; success := CkPdf_SetSignatureJpeg(pdf,jpgData); if (success = False) then begin Memo1.Lines.Add(CkPdf__lastErrorText(pdf)); Exit; end; // Specify that we want to display the JPG image in the center with 33% opacity. CkJsonObject_UpdateString(json,'appearance.image','custom-jpg'); CkJsonObject_UpdateString(json,'appearance.imagePlacement','center'); CkJsonObject_UpdateString(json,'appearance.imageOpacity','33'); // Load the signing certificate. (Use your own certificate.) cert := CkCert_Create(); success := CkCert_LoadPfxFile(cert,'qa_data/pfx/myPdfSigningCert.pfx','pfx_password'); if (success = False) then begin Memo1.Lines.Add(CkCert__lastErrorText(cert)); Exit; end; // Tell the pdf object to use the certificate for signing. success := CkPdf_SetSigningCert(pdf,cert); if (success = False) then begin Memo1.Lines.Add(CkPdf__lastErrorText(pdf)); Exit; end; success := CkPdf_SignPdf(pdf,json,'qa_output/hello_signed.pdf'); if (success = False) then begin Memo1.Lines.Add(CkPdf__lastErrorText(pdf)); Exit; end; Memo1.Lines.Add('The PDF has been successfully cryptographically signed.'); // The appearance of the signature appears in Adobe Acrobat as shown here: | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.