📄 sigpropsform.pas
字号:
unit SigPropsForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, SBPDF, SBPDFSecurity;
type
TfrmSignaturesProps = class(TForm)
lSignatures: TLabel;
cbSignatures: TComboBox;
btnOK: TButton;
pSignatureInfo: TPanel;
lAuthorName: TLabel;
editAuthorName: TEdit;
lReason: TLabel;
editReason: TEdit;
lTimestamp: TLabel;
btnValidate: TButton;
btnExtractSigned: TButton;
SaveDialog: TSaveDialog;
procedure cbSignaturesChange(Sender: TObject);
procedure btnValidateClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnExtractSignedClick(Sender: TObject);
private
{ Private declarations }
public
procedure Initialize(Document: TElPDFDocument);
end;
var
frmSignaturesProps: TfrmSignaturesProps;
implementation
{$R *.DFM}
procedure TfrmSignaturesProps.Initialize(Document: TElPDFDocument);
var
I : integer;
begin
cbSignatures.Items.Clear;
editAuthorName.Text := '';
editReason.Text := '';
pSignatureInfo.Visible := false;
for I := 0 to Document.SignatureCount - 1 do
cbSignatures.Items.AddObject(Document.Signatures[I].SignatureName,
Document.Signatures[I]);
end;
procedure TfrmSignaturesProps.cbSignaturesChange(Sender: TObject);
var
Sig : TElPDFSignature;
begin
if cbSignatures.ItemIndex <> -1 then
begin
Sig := TElPDFSignature(cbSignatures.Items.Objects[cbSignatures.ItemIndex]);
if Sig.AuthorName <> '' then
editAuthorName.Text := Sig.AuthorName
else
editAuthorName.Text := '<not specified>';
if Sig.Reason <> '' then
editReason.Text := Sig.Reason
else
editReason.Text := '<not specified>';
lTimestamp.Caption := 'Timestamp: ' + DateTimeToStr(Sig.SigningTime) + ' (local)';
pSignatureInfo.Visible := true;
end
else
pSignatureInfo.Visible := false;
end;
procedure TfrmSignaturesProps.btnValidateClick(Sender: TObject);
var
Sig : TElPDFSignature;
PKHandler : TElPDFPublicKeySecurityHandler;
begin
if cbSignatures.ItemIndex <> -1 then
begin
Sig := TElPDFSignature(cbSignatures.Items.Objects[cbSignatures.ItemIndex]);
if Sig.Validate() then
begin
if Sig.Handler is TElPDFPublicKeySecurityHandler then
begin
PKHandler := TElPDFPublicKeySecurityHandler(Sig.Handler);
if PKHandler.TimestampCount > 0 then
lTimestamp.Caption := 'Timestamp: ' + DateTimeToStr(PKHandler.Timestamps[0].Time) + ' (TSA)';
end;
MessageDlg('The selected signature is VALID', mtInformation, [mbOK], 0);
end
else
MessageDlg('The selected signature is NOT VALID', mtWarning, [mbOK], 0);
end;
end;
procedure TfrmSignaturesProps.btnOKClick(Sender: TObject);
begin
ModalResult := mrOk;
end;
procedure TfrmSignaturesProps.btnExtractSignedClick(Sender: TObject);
var
Sig : TElPDFSignature;
F : TFileStream;
begin
if cbSignatures.ItemIndex <> -1 then
begin
if SaveDialog.Execute then
begin
F := TFileStream.Create(SaveDialog.Filename, fmCreate);
try
Sig := TElPDFSignature(cbSignatures.Items.Objects[cbSignatures.ItemIndex]);
Sig.GetSignedVersion(F);
finally
FreeAndNil(F);
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -