THPDFWindowsFormDataSource

HPDFWindowsFormData fornece uma origem Windows de acesso aleatório, própria, com tempo de vida privado de arquivo temporário

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 um arquivo temporário único e expõe seu Stream gravável; grave a origem completa e chame Seal uma vez antes de fornecê-la a um documento carregado

Seal faz flush e fecha o handle gravável, e depois reabre o arquivo para acesso somente leitura com compartilhamento de gravação negado; ele não aceita um caminho arbitrário do chamador como origem de suporte

GetSize reporta o comprimento atual completo do stream; ReadAt rejeita offsets ou contagens negativas, limita a leitura aos bytes disponíveis, retorna zero em ou além do EOF, e restaura a posição do stream em sucesso e falha

Um documento carregado com OwnSource=False empresta a origem; mantenha-a viva até depois da destruição do documento; Destroy fecha o handle e remove o arquivo privado próprio

A origem não tem cancelamento nem capacidade de bytes independentes; os adapters de transação e de callbacks aplicam isso ao copiar e ler; chamadores que preparam uma origem diretamente precisam aplicar seus próprios limites e política de cancelamento

Classe Transaction, Troca de form data no Windows