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