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