HPDFWriteHeadlessSignatureReservation

Los valores opcionales de THPDFHeadlessSignatureMetadata se convierten en entradas Unicode Reason, Location, ContactInfo y Name; el mismo StringEncoder se aplica tanto a los nombres de field-lock como a los metadatos antes de escribir cualquier byte

function HPDFWriteHeadlessSignatureReservation(Target: TStream;
  ObjectNumber, Generation, ReservedCMSBytes, MaxObjectBytes: Integer;
  CAdES: Boolean = False; CertificationPermission: Integer = 0;
  CatalogObjectNumber: Integer = 0; CatalogGeneration: Integer = 0;
  FieldLock: PHPDFHeadlessFieldLock = nil;
  StringEncoder: THPDFHeadlessPolicyStringEncoder = nil;
  StringEncoderContext: Pointer = nil;
  Metadata: PHPDFHeadlessSignatureMetadata = nil;
  DocumentTimestamp: Boolean = False): THPDFHeadlessSignatureReservation;

Escribe un diccionario de firma indirecto real con slots ByteRange numéricos de anchura fija y una reserva hexadecimal de Contents rellena de ceros

El llamante es dueño del stream de salida y debe suministrar un número de objeto positivo, una generación de 0 a 65535, una reserva DER positiva y un presupuesto de bytes de objeto

La función comprueba el tamaño completo del diccionario antes de escribir o asignar la reserva y rellena su payload hexadecimal en trozos acotados

Establece CAdES=true para ETSI.CAdES.detached; por defecto escribe adbe.pkcs7.detached

Aporta una referencia Catalog válida y un permiso de certificación de 1 a 3 para emitir un transform DocMDP; un field lock opcional emite su transform FieldMDP real en el mismo array Reference

Los nombres de field lock se validan y codifican como cadenas PDF UTF-16BE antes de escribir la reserva; los llamantes de bajo nivel cifrados proporcionan un callback StringEncoder que recibe los bytes en claro y devuelve los bytes de la cadena cifrada

El callback se ejecuta antes de escribir cualquier byte de la reserva, y la expansión de la codificación se incluye en el presupuesto de objeto; THPDFHeadlessDocument aporta automáticamente el contexto de cifrado del documento autenticado

Registra el offset del objeto devuelto con el writer xref compartido, conecta el objeto a un campo de firma y termina el trailer PDF antes de llamar a HPDFFinalizeHeadlessSignatureReservation

Los llamantes de bajo nivel se encargan del staging y la publicación; THPDFHeadlessDocument.SignToFile aporta protección del origen, preservación del cifrado, presupuestos y publicación atómica del archivo

DocumentTimestamp=true escribe DocTimeStamp/ETSI.RFC3161 en lugar de un perfil de aprobación y prohíbe referencias de transform de certificación o field lock; finalízalo con HPDFFinalizeHeadlessDocumentTimestampReservation