THPDFWindowsFormDataSource
HPDFWindowsFormData даёт владеемый источник произвольного доступа Windows с приватным временем жизни временного файла
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 монопольно резервирует уникальный временный файл и открывает его записываемый Stream; запишите полный источник и один раз вызовите Seal, прежде чем передавать его загруженному документу
Seal сбрасывает на диск и закрывает записываемый дескриптор, затем переоткрывает файл только для чтения с запретом совместной записи; произвольный путь вызывающего в качестве подложки он не принимает
GetSize сообщает полную текущую длину потока; ReadAt отвергает отрицательные смещения и счётчики, ограничивает чтение доступными байтами, возвращает ноль на EOF и дальше, и восстанавливает позицию потока при успехе и при сбое
Документ, загруженный с OwnSource=False, заимствует источник; держите его живым до разрушения документа; Destroy закрывает дескриптор и удаляет собственный приватный файл
У источника нет собственной отмены или лимита байтов; транзакционный и колбэковый адаптеры соблюдают их при копировании и чтении; готовящие источник напрямую вызывающие обязаны применять собственные границы и политику отмены