THPDFWindowsFormDataSource

HPDFWindowsFormData aporta una fuente de acceso aleatorio de Windows propia con un ciclo de vida de archivo temporal privado

THPDFWindowsFormDataSource = class(THPDFRandomAccessSource)
  constructor Create;
  destructor Destroy; override;
  procedure Seal;
  function GetSize: Int64; override;
  function ReadAt(Offset: Int64; var Buffer; Count: Longint): Longint; override;
  property Stream: TFileStream;
end;

Create reserva exclusivamente un archivo temporal único y expone su Stream escribible; escribe la fuente completa y llama a Seal una vez antes de entregarlo a un documento cargado

Seal hace flush y cierra el handle escribible, luego reabre el archivo para acceso de solo lectura con sharing de escritura denegado; no toma una ruta arbitraria del llamador como fuente de respaldo

GetSize reporta la longitud completa actual del stream; ReadAt rechaza offsets o conteos negativos, limita la lectura a los bytes disponibles, devuelve cero en o después de EOF, y restaura la posición del stream en éxito y en fallo

Un documento cargado con OwnSource=False toma la fuente prestada; mantenla viva hasta después de la destrucción del documento; Destroy cierra el handle y elimina el archivo privado propio

La fuente no tiene cancelación ni capacidad de bytes independientes; los adapters de transacción y callbacks las aplican mientras copian y leen; los llamadores que preparan una fuente directamente deben aplicar sus propios límites y política de cancelación

Clase Transaction, Intercambio de form data en Windows