HPDFWriteHeadlessSignatureReservation

Los valores opcionales de THPDFHeadlessSignatureMetadata se convierten en entradas Unicode Reason, Location, ContactInfo y Name; el mismo StringEncoder aplica tanto a los nombres de field locks como a los metadata 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 fijos y una reserva hexadecimal de Contents rellena de ceros

El llamador 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 verifica el tamaño completo del diccionario antes de escribir o asignar la reserva y llena su payload hexadecimal en chunks acotados

Asigna CAdES=true para ETSI.CAdES.detached; el default escribe adbe.pkcs7.detached

Suministra 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 arreglo Reference

Los nombres de field locks se validan y codifican como cadenas PDF UTF-16BE antes de escribir la reserva; los llamadores de bajo nivel cifrados suministran un callback StringEncoder que recibe los bytes en texto plano y devuelve los bytes de la cadena cifrada

El callback corre antes de escribir cualquier byte de la reserva, y la expansión de la codificación se incluye en el presupuesto del objeto; THPDFHeadlessDocument suministra 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 del PDF antes de llamar a HPDFFinalizeHeadlessSignatureReservation

Los llamadores de bajo nivel son responsables del staging y la publicación; THPDFHeadlessDocument.SignToFile aporta protección de source, preservación de cifrado, presupuestos y publicación atómica de archivos

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 locks; finalízalo con HPDFFinalizeHeadlessDocumentTimestampReservation