function PreparePadesRemoteSignature(Prepared: TStream; const Options: TPadesRemoteSignOptions; out Request: TPadesRemoteSigningRequest): Boolean;
Salvează documentul activ, adaugă un Widget de semnătură invizibil și un câmp AcroForm, rezervă un slot /Contents cu lățime fixă, finalizează xref-ul și trailer-ul incrementale și calculează digest-ul SHA-256 detașat exact
Options.FieldOptions poate autora valori seed necesare, motive permise și atestări legale, certificate de semnatar acceptabile, încuietori de câmp și parametri de transformare de aprobare sau de certificare
Cererea returnată leagă digest-ul și ByteRange-ul de amprenta completă a PDF-ului pregătit, astfel încât fluxul de lucru să poată fi reluat după o graniță de proces, de mașină sau de rețea
| Prepared | Fluxul destinație pentru PDF-ul substituent imutabil, trimis alături de cererea de semnare la distanță |
| Options | Metadatele dicționarului de semnătură, capacitatea CMS rezervată în octeți și constrângerile opționale de câmp |
| Request | Metadate persistente de digest, amprentă, ByteRange, offset și capacitate |
Active să fie TrueAcceptableCertificates, deoarece certificatul semnatarului la distanță nu este încă disponibilCertificationPermission acceptă 1, 2 sau 3, scrie atât DocMDP, cât și /Perms din catalog, și respinge documentele care au deja o semnătură de certificareLockAction scrie atât dicționarul /Lock al câmpului, cât și transformarea de semnătură FieldMDP corespunzătoareContentsSize este restrâns la cel puțin 1024 de octeți și limitat la 64 MiBmessage-digest să fie egal cu Request.DocumentDigestPrepared fără modificări și serializați Request prin SavePadesRemoteSigningRequest
var
Prepared, RequestData: TMemoryStream;
Options: TPadesRemoteSignOptions;
Request: TPadesRemoteSigningRequest;
begin
Options := TPadesRemoteSignOptions.Default;
Prepared := TMemoryStream.Create;
RequestData := TMemoryStream.Create;
try
if Pdf1.PreparePadesRemoteSignature(Prepared, Options, Request) then
TPdf.SavePadesRemoteSigningRequest(RequestData, Request);
finally
RequestData.Free;
Prepared.Free;
end;
end;