THPDFWindowsFormDataSource

HPDFWindowsFormData stellt eine eigene Windows-Random-Access-Source mit privater temporärer Datei-Lebensdauer bereit

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 reserviert exklusiv eine eindeutige temporäre Datei und legt ihren beschreibbaren Stream offen; schreibe die komplette Source und rufe einmal Seal auf, bevor du sie einem geladenen Dokument übergibst

Seal flusht und schließt das beschreibbare Handle und öffnet die Datei danach nur lesend mit verweigertem Write-Sharing; sie nimmt keinen beliebigen Aufrufer-Pfad als Backing-Source

GetSize meldet die komplette aktuelle Stream-Länge; ReadAt weist negative Offsets oder Counts zurück, begrenzt das Lesen auf verfügbare Bytes, liefert an und hinter EOF null und stellt die Stream-Position bei Erfolg und Fehlschlag wieder her

Ein mit OwnSource=False geladenes Dokument leiht die Source; halte sie am Leben, bis das Dokument zerstört ist; Destroy schließt das Handle und entfernt die eigene private Datei

Die Source hat keinen eigenen Abbruch und keine eigene Byte-Kapazität; die Transaktions- und Callback-Adapter erzwingen beides beim Kopieren und Lesen; Aufrufer, die eine Source direkt vorbereiten, müssen eigene Grenzen und eine Abbruch-Policy anwenden

Transaktionsklasse, Windows-Formulardatenaustausch